1、mybatis执行过程分析
2、mybatis插件
3、通用Mapper使用
1.1 getMapper的到MapperProxy实例:
部分源码:
DefaultSqlSession类:
Configuration类:
MapperRegistry类:
MapperProxyFactory类:
1.2 Executor执行的过程:
部分源码:
MapperProxy类:
MapperMethod类:
DefaultSqlSession类:
BaseExecutor类:执行器的实现类:
SimpleExecutor类:
1.3 执行流程描述
执行器:
SimpleExecutor:默认的执行器
BatchExecutor:批处理的执行器
ReuseExecutor:预处理,重用的执行器
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
1、创建拦截器类:
调试效果:
2、在全局配置文件中注册拦截器:
源码分析:
Plugin类:
3、测试;
2.2、pagehelper分页插件使用:
官网:https://pagehelper.github.io/
1、引入jar包:
2、注册拦截器:
参考官网用法
3、使用:
通用Mapper简介:
通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
极其方便的使用MyBatis单表的增删改查。
支持单表 *** 作,不支持通用的多表联合查询。
官方文档参考
1、引入依赖:
2、定义实体类型:
泛型实体类的要求:
示例:
3、创建Dao接口:
4、测试:
部分接口说明:
Select
接口:SelectMapper<T>
方法:List<T>select(T record)
说明:根据实体中的属性值进行查询,查询条件使用等号
接口:SelectByPrimaryKeyMapper<T>
方法:T selectByPrimaryKey(Object key)
说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号
Insert
接口:InsertMapper<T>
方法:int insert(T record)
说明:保存一个实体,null的属性也会保存,不会使用数据库默认值
接口:InsertSelectiveMapper<T>
方法:int insertSelective(T record)
说明:保存一个实体,null的属性不会保存,会使用数据库默认值
Update
接口:UpdateByPrimaryKeyMapper<T>
方法:int updateByPrimaryKey(T record)
说明:根据主键更新实体全部字段,null值会被更新
接口:UpdateByPrimaryKeySelectiveMapper<T>
方法:int updateByPrimaryKeySelective(T record)
说明:根据主键更新属性不为null的值
Example 方法
接口:SelectByExampleMapper<T>
方法:List<T>selectByExample(Object example)
说明:根据Example条件进行查询
重点:这个查询支持通过Example类指定查询列,通过selectProperties方法指定查询
测试之前的准备:
示例1:根据主键进行查询:
没有设置@Id的结果:
设置@Id后的结果1:
示例2:录入测试:
示例3:query by criteria
查询命令如下:
通用Mapper也可以使用MBG自动生成;
1、Mybatis的执行流程分析
2、Mybatis的插件机制
3、通用Mapper使用
mybatis怎么通过sql生成实体类
首先:最好把实体类里面的变量名称和表里面字段写成一致。
然后:在SqlMapConfig.xml中
<typeAliases>
<typeAlias
alias="game"
type="实体类路径"/>
</typeAliases>
这就是把你的实体类写了个别名
最后:在写查询添加的时候:
<select
id="gameDao"
resultType="game">返回实体类对象
select
*
from
tb_game
</select>
这样查出的结果就对应上数据了。
首先,需要在idea中配置数据源:
右键点击想要快速生成对象的表,点击小红鸟开始生成
点击定制列,更改生成字段的类型,一般将byte改为integer
小技巧:
在mapper.java中,输入selectAllBy****(字段名),可以自动生成符合查找逻辑的SQL
按下alt+回车即可自动生成
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)