通用mapper的使用+简单的条件+分页查询

通用mapper的使用+简单的条件+分页查询,第1张

启动类上

简单的条件分页查询要的要导的坐标

yal中写mysql的账号,密码,url。这个就不贴图了。

main层

Service层

因为导入了通用mapper所有可以用。

查询的可以替换为List userList =userMapper.select(user)

mapper层 

不调用其他类中的方法也可以。比如@select等

mapper层调用的类

这个方法一定要是public否则会报错

如何开发自己的通用Mapper

HsqldbMapper实例

第一步,创建HsqldbMapper<T>

public interface HsqldbMapper<T>{

}

这个接口就是我们定义的通用Mapper,具体的接口方法在**第三步**写。其他的Mapper可以继承这个HsqldbMapper<T>。

第二部,创建HsqldbProvider

public class HsqldbProvider extends MapperTemplate {

//继承父类的方法

public HsqldbProvider(Class<?>mapperClass, MapperHelper mapperHelper) {

super(mapperClass, mapperHelper);

}

}

这个类是实际处理 *** 作的类,需要继承MapperTemplate,具体代码在**第四步**写。

第三步,在HsqldbMapper<T>中添加通用方法

这里以一个分页查询作为例子。 public interface HsqldbMapper { /** * 单表分页查询 * * @param object * @param offset * @param limit * @return */

@SelectProvider(type=HsqldbProvider.class,method = "dynamicSQL") List

selectPage(@Param("entity") T object, @Param("offset") int offset,

@Param("limit") int limit); }

返回结果为List,入参分别为查询条件和分页参数。在Mapper的接口方法中,当有多个入参的时候建议增加@Param注解,否则就得用param1,param2…来引用参数。

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使用


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11858006.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存