欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

18.5.4,mybatis总结1

程序员文章站 2024-01-30 10:55:58
...

1.mybatis优秀的持久层框架,使开发者注重sql而不是注册驱动、创建connection、创建statement等繁琐操作。

2.Mybatis通过xml或注解的方式将要执行的各种(statmentpreparestatementcallableStatement)配置起来。将duixstatement中的sql进行映射生成sql语句。最后由框架运行sql并将结果映射成java对象并返回。

3.Jdbc编程步骤:

注册驱动-获取数据库连接-创建statement对象-设置sql语句-设置sql的参

-preparestatement执行sql语句并获得结果-处理结果集-释放资源

resultset-preparestatement-connention)。

Class.forName(“”)-driverManager.getConnection-conn.getpreparestatement()...

4.sqlMapConfigure.xmlmybatis的全局配置文件,配置了mybatis的配置信息。

Mapper.xmlsql映射文件,此文件需要在sqlMapperConfigure.xml中加载。

通过mybatis环境等配置信息构造sqlsessionfactory即会话工厂。

sqlsessionfactory创建sqlsession即会话。操作数据库需要sqlsession执行。

Mybatis底层定义了Executor执行器接口操作数据库。Executor有两个实现,一个是基本执行器,一个是缓存执行器。

MapperStatementmybatis底层封装的一个对象。他包装了mybatis配置信息以及sql映射信息。Mapper.xml文件中一个sql对应一个mapperStatement对象,sqlid即是

mappersatementid

Mapperedstatementsql执行输入参数进行定义,包括hashmap,基本类型,pojo

Executor通过MapperedStatement在执行sql前将输入的java对象映射到sql中,(输入参数映射就是jdbc编程中对preparestatement进行参数设置)。

MapperedStatementsql执行输出结果进行定义,包括hashmap、基本类型、pojoExecutor通过MapperStatement对执行sql后输出的结果映射到java对象里面(这个过程相当于jdbc编程中对结果集进行解析)。

5.mybatis-3.2.7.jar  mybatis的核心包。lib文件夹 mybatis的依赖包

6.Mybatis搭建:

导入mybatis核心包,依赖包,数据库驱动包。

创建config文件夹,加入log4jSqlMapConfig.xml配置文件。(mybatis默认使用log4j作为日志输出)。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!-- 和spring整合后 environments配置将废除 -->

<environments default="development">

<environment id="development">

<!-- 使用jdbc事务管理 -->

<transactionManager type="JDBC" />

<!-- 数据库连接池 -->

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url"

value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />

<property name="username" value="root" />

<property name="password" value="root" />

</dataSource>

</environment>

</environments>

</configuration>

SqlMapConfig.xmlmybatis的核心配置文件,内容为数据源和事务管理

7.pojo类作为mybatis进行sql映射使用,pojo类与数据库表相对应。

8.在SqlMapConfig.xml中加载映射文件。

<configuration>

<mappers >

<mapper resource=””/>

</mappers>

</configuration>

9.映射文件跟标签是mapper namesapce名空间。

#{}:输入参数的占位符,相当于jdbc的?

自动进行java类型和jdbc类型转换如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

 

测试步骤:

 1. 创建new SqlSessionFactoryBuilder对象

 2. 加载SqlMapConfig.xml配置文件

 3. 创建SqlSessionFactory对象

 4. 创建SqlSession对象

 5. 执行SqlSession对象执行查询,获取结果User

 6. 打印结果

 7. 释放资源(sqlsession)

10.parametertype指定入参,mybatis通过ognl表达式从输入对象中获得参数拼接在sql中。

Resulttype:出参,映射为对象,如果有多条则放入list集合中。

11.selectoneselectList如果使用selectone查询多条记录则抛出异常。

12.自增朱健返回:

修改映射文件,可以实现自增朱健返回。

<!-- 保存用户 -->

<insert id="saveUser" parameterType="cn.itcast.mybatis.pojo.User">

<!-- selectKey 标签实现主键返回 -->

<!-- keyColumn:主键对应的表中的哪一列 -->

<!-- keyProperty:主键对应的pojo中的哪一个属性 -->

<!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->

<!-- resultType:设置返回的id的类型 -->

<selectKey keyColumn="id" keyProperty="id" order="AFTER"

resultType="int">

SELECT LAST_INSERT_ID()

</selectKey>

INSERT INTO `user`

(username,birthday,sex,address) VALUES

(#{username},#{birthday},#{sex},#{address})

</insert>

当mysql使用uuid做主键时获取主键需要做以下更改:

Order=“BEFORE” resulttype=“string”

13.执行增删改差都是sqlsession执行。

14.spring-jdbc.jar提供自带的连接池

15.sqlSession封装了对数据库的操作,增删改差。(创建过程:

sqlsessionFactoryBuilder(创建完工厂即无用了)-sqlsessionfactory-sqlsession

sqlsessionFactory是一个接口:其中定义了opensession的不同重载方法,通常它的使用范围是整个应用运行期间,单例模式存在。

Sqlsession是操作数据库的,每个线程都应该有自己的sqlsession实例,sqlsession不能共享,同样它也是线程不安全的。最佳范围是请求或方法范围。绝不能放在类的静态字段或实例字段中。(sqlsession使用完毕需要关闭,放在finally

16.MybatisDao开发方法两种:

原始dao需要自己开发dao接口和dao实现类。

动态代理开发:

Mapper的动态代理开发只需要声明接口,mybatis根据接口创建动态代理对象,该代理对象的方法体同该接口的实现类方法。

Mapper开发需要遵循一下规范:

1.mapper.xml文件中的namespacemapper接口的类路径相同。

2.Mapper接口的方法名和mapper.xml文件定义的statementid相同。

3.Mapper接口方法的出参和入参和mapper.xml定义的相同

步骤:从spring容器获得sqlsession,获得接口的代理对象

sqlsession.getMapper(“UserMapper.class”);

动态代理开发调用selectOneselectList是根据配置文件的返回值指定。

入参可以使用pojo包装。

17.

Sqlmapconfig.xml中节点的顺序中properties在最上面

sqlmapconfig.xml文件中可以引用java属性文件的配置信息(db.properties)。

<configuration>

<properties resource=”db.properties”>

<!-- 如果外部配置文件有该属性,则内部定义属性被外部属性覆盖 -->

<property name=”’ value=”’/>

<property name=”’ value=”’/>

<property name=”’ value=”’/>

</properties>

</configuration>

18.<transactionManager type=”JDBC”/>使用数据库自己的事务(局部事务)

19.Properties元素内部的首先会先辈读取,然后读取resourceurl,他会覆盖已经读取的同名属性。

<typeAliases>

<!-- 单个别名定义 -->

<typeAlias alias="user" type="cn.itcast.mybatis.pojo.User" />

<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->

<package name="cn.itcast.mybatis.pojo" />

<package name="其它包" />

</typeAliases>

别名定义写在<properties resource下面>,别名大小写不敏感

20.

Mappers映射

<mapper resource=””/>

<mapper class=””/>此种方法要求mapper接口和mapper映射文件名相同,并放在同一个目录。

相关标签: mybatis