增加Maven依赖

<!-- mybatis 通用mapper -->
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>3.3.0</version>
</dependency>

修改spring-mybatis.xml

<!-- 配置mapper扫描器 如果用了通用mapper插件  class="org.mybatis.spring.mapper.MapperScannerConfigurer"中的org改成tk即可 -->  <!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> --><bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 扫描这个包以及它的子包下的所有映射接口类,多个包逗号隔开 --><property name="basePackage" value="com.zns.dao.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean>

实体类

package com.zns.entity;import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Table(name = "test")
public class Test {@Id@Column(name = "id")@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

public interface TestMapper extends Mapper<Test>{}

一旦继承了Mapper<T>,继承的Mapper就拥有了Mapper<T>所有的通用方法

//根据实体类不为null的字段进行查询,条件全部使用=号and条件
List<T> select(T record);//根据实体类不为null的字段查询总数,条件全部使用=号and条件
int selectCount(T record);
//根据主键进行查询,必须保证结果唯一
//单个字段做主键时,可以直接写主键的值
//联合主键时,key可以是实体类,也可以是Map
T selectByPrimaryKey(Object key);//插入一条数据
//支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)
//优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长
int insert(T record);//插入一条数据,只插入不为null的字段,不会影响有默认值的字段
//支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)
//优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长
int insertSelective(T record);//根据实体类中字段不为null的条件进行删除,条件全部使用=号and条件
int delete(T key);//通过主键进行删除,这里最多只会删除一条数据
//单个字段做主键时,可以直接写主键的值
//联合主键时,key可以是实体类,也可以是Map
int deleteByPrimaryKey(Object key);//根据主键进行更新,这里最多只会更新一条数据
//参数为实体类
int updateByPrimaryKey(T record);//根据主键进行更新
//只会更新不是null的数据
int updateByPrimaryKeySelective(T record);

实体类按照如下规则和数据库表进行转换,注解全部是JPA中的注解:

  1. 表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info

  2. 表名可以使用@Table(name = "tableName")进行指定,对不符合第一条默认规则的可以通过这种方式指定表名.

  3. 字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式.

  4. 可以使用@Column(name = "fieldName")指定不符合第3条规则的字段名

  5. 使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用.

  6. 建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键.

  7. 默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低).

  8. 实体类可以继承使用,可以参考测试代码中的tk.mybatis.mapper.model.UserLogin2类.

  9. 由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型.

  10. @NameStyle注解,用来配置对象名/字段和表名/字段之间的转换方式,该注解优先于全局配置style,可选值:

  • normal:使用实体类名/属性名作为表名/字段名

  • camelhump:这是默认值,驼峰转换为下划线形式

  • uppercase:转换为大写

  • lowercase:转换为小写

通过使用Mapper专用的MyBatis生成器插件可以直接生成符合要求带注解的实体类。

参考资料

https://www.oschina.net/p/mybatis-mapper

转载于:https://www.cnblogs.com/zengnansheng/p/10385852.html

Mybatis之通用Mapper使用相关推荐

  1. java mysql geometry,扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper...

    扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper 因项目中需要用到地理位置信息的存储.查询.计算等,经过研究决定使用mysql(5.7版本) ...

  2. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...

  3. Java使用lambda进行分页,SpringBoot(八):整合mybatis,通用mapper,分页插件,lambda,Logger,junit用法...

    本文作者:低调小熊猫 转载声明:自由转载-非商用-非衍生-保持署名,非商业转载请注明作者及出处,商业转载请联系作者本人qq:2696284032 整合demo 配置依赖 tk.mybatis mapp ...

  4. MyBatis插件:通用mapper的配置和应用

    Mapper是刘增辉开发的一个通用的插件功能和MyBatis Generator类似, 通用Mapper都可以极大的方便开发人员.可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通 用方 ...

  5. MyBatis之通用mapper

    文章目录 对比 依赖 yml配置 扫描 BaseMapper的方法 增 insert插入数据 insertSelective插入非空数据 删 deleteByexample根据条件删除多条 delet ...

  6. TK mybatis插件通用mapper与oracle的几个坑

    最近公司有几个项目的数据库用的oracle,有段时间没用,然后果断就掉坑里面了,记录几个比较有代表性的. 1:关于oracle的批量数据插入,我用TK通用mapper的insertList方法自动拼接 ...

  7. MBG(mybatis逆向工程)+通用mapper+lombok

  8. MyBatis 为什么需要通用 Mapper ? 1

    版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/83045335 ...

  9. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

最新文章

  1. 哈勃望远镜进一步确认宇宙在加速膨胀
  2. Object-C 中的Selector 概念
  3. mysqlreport查看mysql性能
  4. char类型是多少 mat_opencv之Mat数据类型
  5. 那些你不知道的 LVS 秘密!
  6. python拼写_python 拼写检查器
  7. Flutter进阶—铅刀一割
  8. 大学计算机相关理论,大学计算机理论基础 大学计算机基础理论题.doc
  9. 阿里巴巴Java开发手册--各个版本汇总
  10. Visio2013 Professional专业版密钥
  11. 纯php员工管理,php企业员工信息管理系统
  12. Android 终端使用 JavaCV
  13. 写给安卓软件工程师的3条建议,全套教学资料
  14. 3.22全局参数的保存_补作业来啦~~
  15. 快速排序与冒泡排序的效率对比
  16. 麦马计算机科学和麦马数学专业,积极配合 成功申请麦克马斯特大学数学专业...
  17. Python与ADB的基情四射(一)——简单命令
  18. android开发非-转动圆形菜单
  19. Win32_17集音频和视频播放功能于一身的简易播放器
  20. 电商o2o系统开发原理和解决方案你get了吗?

热门文章

  1. 惊艳!基于RNN的AI写词机竟能写出如此优秀的情诗!
  2. 监管AI?吴恩达跟马斯克想到一块去了
  3. 今天被TensorFlowLite刷屏了吧,偏要再发一遍
  4. Spring Boot一键换肤,so easy!
  5. 还在写大量 if 来判断?试试用一个规则执行器来替代它
  6. 好家伙!JDK16 GA 终于发布,内置 Lombok 的功能,真的顶?
  7. 为何每次用完 ThreadLocal 都要调用 remove()
  8. 求你了,不要再在对外接口中使用枚举类型了!
  9. 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?
  10. 关于 CPU 的一些基本知识总结