Mybatis之通用Mapper使用
增加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中的注解:
表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如
UserInfo
默认对应的表名为user_info
。表名可以使用
@Table(name = "tableName")
进行指定,对不符合第一条默认规则的可以通过这种方式指定表名.字段默认和
@Column
一样,都会作为表字段,表字段默认为Java对象的Field
名字驼峰转下划线形式.可以使用
@Column(name = "fieldName")
指定不符合第3条规则的字段名使用
@Transient
注解可以忽略字段,添加该注解的字段不会作为表字段使用.建议一定是有一个
@Id
注解作为主键的字段,可以有多个@Id
注解的字段作为联合主键.默认情况下,实体类中如果不存在包含
@Id
注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低).实体类可以继承使用,可以参考测试代码中的
tk.mybatis.mapper.model.UserLogin2
类.由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型.
@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使用相关推荐
- java mysql geometry,扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper...
扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper 因项目中需要用到地理位置信息的存储.查询.计算等,经过研究决定使用mysql(5.7版本) ...
- SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页
乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...
- Java使用lambda进行分页,SpringBoot(八):整合mybatis,通用mapper,分页插件,lambda,Logger,junit用法...
本文作者:低调小熊猫 转载声明:自由转载-非商用-非衍生-保持署名,非商业转载请注明作者及出处,商业转载请联系作者本人qq:2696284032 整合demo 配置依赖 tk.mybatis mapp ...
- MyBatis插件:通用mapper的配置和应用
Mapper是刘增辉开发的一个通用的插件功能和MyBatis Generator类似, 通用Mapper都可以极大的方便开发人员.可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通 用方 ...
- MyBatis之通用mapper
文章目录 对比 依赖 yml配置 扫描 BaseMapper的方法 增 insert插入数据 insertSelective插入非空数据 删 deleteByexample根据条件删除多条 delet ...
- TK mybatis插件通用mapper与oracle的几个坑
最近公司有几个项目的数据库用的oracle,有段时间没用,然后果断就掉坑里面了,记录几个比较有代表性的. 1:关于oracle的批量数据插入,我用TK通用mapper的insertList方法自动拼接 ...
- MBG(mybatis逆向工程)+通用mapper+lombok
- MyBatis 为什么需要通用 Mapper ? 1
版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/83045335 ...
- Springboot集成mybatis通用Mapper与分页插件PageHelper
Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...
最新文章
- 哈勃望远镜进一步确认宇宙在加速膨胀
- Object-C 中的Selector 概念
- mysqlreport查看mysql性能
- char类型是多少 mat_opencv之Mat数据类型
- 那些你不知道的 LVS 秘密!
- python拼写_python 拼写检查器
- Flutter进阶—铅刀一割
- 大学计算机相关理论,大学计算机理论基础 大学计算机基础理论题.doc
- 阿里巴巴Java开发手册--各个版本汇总
- Visio2013 Professional专业版密钥
- 纯php员工管理,php企业员工信息管理系统
- Android 终端使用 JavaCV
- 写给安卓软件工程师的3条建议,全套教学资料
- 3.22全局参数的保存_补作业来啦~~
- 快速排序与冒泡排序的效率对比
- 麦马计算机科学和麦马数学专业,积极配合 成功申请麦克马斯特大学数学专业...
- Python与ADB的基情四射(一)——简单命令
- android开发非-转动圆形菜单
- Win32_17集音频和视频播放功能于一身的简易播放器
- 电商o2o系统开发原理和解决方案你get了吗?