18.5.4,mybatis总结1

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作为日志输出)。




































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

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

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

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.自增朱健返回:

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

















SELECT LAST_INSERT_ID()



INSERT INTO `user`

(username,birthday,sex,address) VALUES

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



当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)。

18.使用数据库自己的事务(局部事务)

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

<typeAliases>

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

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

<package name="其它包" />

typeAliases>

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

20.

Mappers映射

””/>

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

你可能感兴趣的:(mybatis总结,mybatis)