一.获取自动生成的主键

java 通用mapper insertSelective的返回值 mapper的resulttype_mysql


二.typeAlias(别名的使用)

在主配置文件mybatis-config.xml中添加配置

java 通用mapper insertSelective的返回值 mapper的resulttype_配置文件_02


在mapper.xml文件中,可以直接使用别名

java 通用mapper insertSelective的返回值 mapper的resulttype_预处理_03


三.提取properties

1.不要把将连接数据库的信息直接写死在主配置文件mybatis-config.xml中,需要将连接数据库的信息抽离到单独的文件中(do.properties),便于后期的管理:

java 通用mapper insertSelective的返回值 mapper的resulttype_预处理_04


java 通用mapper insertSelective的返回值 mapper的resulttype_mybatis_05


2.在连接池配置中获取配置文件中的数据:

3.将属性文件加载到程序中(推荐使用在主配置文件中将资源文件加载进来):

java 通用mapper insertSelective的返回值 mapper的resulttype_配置文件_06


四.ResultMap的使用:

在执行查询操作的时候,如果列名和属性名称不一样,那么无法将结果集中的数据封装到对象中

解决方案:

需要在Mapper文件中将属性名和列名做一个映射

在查询元素中使用resultMap来指定将数据封装到哪里

注意:在该元素中只能使用resultType或者resultMap中的一种,不能同时用resultMap定义了一个ORM的具体映射方式

1,type:代表O,即最终返回的对象类型

2,id:为该映射设置一个名称,这个名称就是在get或list中使用的resultMap对应的id

java 通用mapper insertSelective的返回值 mapper的resulttype_数据库_07


id/result:对应这属性的映射,可以参考hibernate的property。id和result的区别在于,id一般用于映射主键,可以提高速度,result一般对于普通的属性。

java 通用mapper insertSelective的返回值 mapper的resulttype_mysql_08


五.使用Mapper接口:

问题:

1.现在要执行SQL,需要去Mapper中通过statementid找到对应的SQL

而statementid通常是比较长,所以,容易写错

2.在执行SQL的时候,需要将参数传递进去,但是此时是没有类型约束的,所以容易错,而且在编译时期发现不了,只有在运行阶段才能发现解决方案:使用接口来约束:UserMapper

java 通用mapper insertSelective的返回值 mapper的resulttype_mysql_09


java 通用mapper insertSelective的返回值 mapper的resulttype_mybatis_10


使用动态代理的方式,在虚拟机中动态的创建一份UserMapper的实现类

生成的代理对象:class com.sun.proxy.$Proxy2

六.SqlSessionFactory的简单描述:

1,SqlSessionFactory在创建SqlSession的时候有多个方法,可以通过传入不同参数定制:
Transaction (事务): 你想为 session 使用事务或者使用自动提交(通常意味着很多 数据库和/或 JDBC 驱动没有事务)?
Connection (连接): 你想 MyBatis 获得来自配置的数据源的连接还是提供你自己
Execution (执行): 你想 MyBatis 复用预处理语句和/或批量更新语句(包括插入和 删除)?

2,默认的openSession创建的SqlSession具有如下特征:
会开启一个事务,但不会自动提交;
连接对象会从由活动环境配置的数据源实例中得到;
事务隔离级别将会使用驱动或数据源的默认设置;
预处理语句不会被复用,也不会批量处理更新;

3,ExecutorType:定义SqlSession的运行方式:
ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
ExecutorType.BATCH: 这个执行器会批量执行所有更新语句(会出现insert无法立刻得到id的问题)。