浅谈Mybatis通用Mapper使用方法
作者:就没一个昵称能用 发布时间:2023-02-15 17:46:52
对单表进行增删改查是项目中不可避免的需求,Mybatis的通用Mapper插件使这些操作变得简单
添加maven依赖
在对应工程的pom.xml文件中添加
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.1.2</version>
</dependency>
配置 *
在mybatis-config.xml文件中添加通用Mapper
<plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
<!--================================================-->
<!--可配置参数说明(一般无需修改)-->
<!--================================================-->
<!--UUID生成策略-->
<!--配置UUID生成策略需要使用OGNL表达式-->
<!--默认值32位长度:@java.util.UUID@randomUUID().toString().replace("-", "")-->
<!--<property name="UUID" value="@java.util.UUID@randomUUID().toString()"/>-->
<!--主键自增回写方法,默认值MYSQL,详细说明请看文档-->
<property name="IDENTITY" value="HSQLDB"/>
<!--序列的获取规则,使用{num}格式化参数,默认值为{0}.nextval,针对Oracle-->
<!--可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName,PropertyName-->
<property name="seqFormat" value="{0}.nextval"/>
<!--主键自增回写方法执行顺序,默认AFTER,可选值为(BEFORE|AFTER)-->
<!--<property name="ORDER" value="AFTER"/>-->
<!--通用Mapper接口,多个通用接口用逗号隔开-->
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
继承通用Mapper<T>,必须指定泛型<T>
public interface ClubMapper extends Mapper<TClub>
{
}
继承了Mapper<T>之后,就拥有了Mapper中的各种通用方法,具体可以查看源码
泛型(表对象实体类)<T>要求
实体类需要按照如下规则和数据库表进行转换,注解全部是JPA中的注解,所以我们在maven中添加了它的jar包依赖
表名默认使用类名,驼峰转下划线,如UserInfo默认对应的表名为user_info
表名可以使用@Table(name = "tableName")进行指定,对不符合第一条默认规则的可以通过这种方式指定表名
字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式
可以使用@Column(name = "fieldName")指定不符合第3条规则的字段名
使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用
建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键
默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低)
实体类可以继承使用
由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型
Mapper还提供了主键自增的方式
@Id
@GeneratedValue(generator = "JDBC")
@Column(name = "id")
private Integer id;
添加Mapper配置
将继承的Mapper接口添加到mybatis-config.xml文件中
<mappers>
<mapper class="com.ind4.iss.icp.dao.logic.map.mapper.club.clubMapper" />
</mappers>
具体使用
public List<TClub> queryList() throws CcpException
{
SqlSession sqlSession = CcpDB.getInstance().getSession();
try
{
ClubMapper mapper = getMapper(sqlSession);
TClub tClub = new TClub();
return mapper.select(tClub);
}
catch (Exception e)
{
CcpLogger.getInstance().error(e, "TClubDAO.queryList, status=" + status);
throw new CcpException(CcpErrorCode.ERROR_CLUB_DAO_DB_ERROR, e);
}
finally
{
CcpDB.getInstance().closeSession();
}
}
private ClubMapper getMapper(SqlSession sqlSession)
{
return sqlSession.getMapper(ClubMapper.class);
}
来源:http://www.jianshu.com/p/5854bfd0f0e6?utm_source=tuicool&utm_medium=referral


猜你喜欢
- 上篇并发编程之Java内存模型volatile的内存语义介绍了volatile的内存语义,本文讲述的是final的内存语义,相比之下,fin
- 一、MessageBox弹出框MessageBox.Show(<字符串> Text, <字符串> Title, &l
- 1、maven打包Spring Boot项目的pom.xml文件中默认使用spring-boot-maven-plugin插件进行打包:&l
- 前言Java中容器对象主要用来存储其他对象,根据实现原理不同,主要有3类常用的容器对象:1、ArrayList 使用数组结构存储容器中的元素
- Java 执行 JS 脚本工具用途:为了便于系统扩展,提供了 JS 脚本的功能,可以通过在系统中执行脚本来获得更复杂的功能。例如:系统提供了
- 作为Android app,发布多个分发平台是常规操作。然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻
- 前言 前几天有在微博上推荐过一个博客,看他文章时发现了这个属性。有些属性不常用,但需要的时候非常有用,于是做了个例子,正好项目用到
- 1.功能介绍Spring框架提供了线程池和定时任务执行的抽象接口:TaskExecutor和TaskScheduler来支持异步执行任务和定
- Logback日志基础配置logback日志配置有很多介绍,但是有几个非常基础的,容易忽略的。下面是最简单的一个配置,注意加粗的描述<
- 前言今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往
- 有一天,你写了好多好多带“形参”的构造函数(就是“方法”,同义),而且需要向这些构造函数里传递同样的“实参”,然后你就憨憨地一个一个函数的调
- 在编写程序,我们经常会对一些时间进行比较,比如要搜寻一个时间范围中的数据,需要用户输入开始时间和结束时间,如果结束时间小于或等于开始时间,那
- 一、背景当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系
- 这篇文章主要介绍了SpringCloud断路器Hystrix原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- C#版本public static Component AddComponent(GameObject go, string assembl
- 网上搜集了java的学习思维导图,分享给大家。01.Java程序设计(基础)02.Java程序设计(专题)03.客户端网页编程04.Java
- 前言最近对 base-spring-boot 项目进行了升级。在将其用于应用开发中时遇到java.lang.ArrayStoreE
- 译文链接: https://www.infoworld.com/art...AutoMapper 是一个非常流行的 object-to-ob
- Docker是干什么的Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发,源代
- Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的