SpringBoot集成TkMybatis插件

2023-10-29 04:59

本文主要是介绍SpringBoot集成TkMybatis插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

基于SpringBoot,继承Mybatis后,对其进行简化,尽量减少开发工作量!

实现步骤如下:

一、引入TKMybatis依赖

<!-- 引入TkMybatis的Maven依赖 --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>4.1.5</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency>

二、配置实体类

package com.yuq.sunrise.model;import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;/*** 用户信息* @author Administrator**/
@Table(name = "USER_INFO")
public class User implements Serializable {private static final long serialVersionUID = 1L;// @Id表示该字段对应数据库表的主键id// @GeneratedValue中strategy表示使用数据库自带的主键生成策略.// @GeneratedValue中generator配置为"JDBC",在数据插入完毕之后,会自动将主键id填充到实体类中.类似普通mapper.xml中配置的selectKey标签@Id@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "JDBC")private Long rowId;private String loginName;private String password;private String realName;private String telPhone;private String emailAddress;private Date createDate;private Date loginTime;private Integer loginCount;private String isVal;/*** create by: yuq* description: 默认构造* create time: 2019-06-08 19:57** @param* @return*/public User() {super();}/*** create by: yuq* description: 构造函数,不包含主键字段* create time: 2019-06-08 19:57** @param* @return*/public User(String loginName, String password, String realName, String telPhone, String emailAddress, Date createDate, Date loginTime, Integer loginCount, String isVal) {this.loginName = loginName;this.password = password;this.realName = realName;this.telPhone = telPhone;this.emailAddress = emailAddress;this.createDate = createDate;this.loginTime = loginTime;this.loginCount = loginCount;this.isVal = isVal;}/*** create by: yuq* description: 构造函数,所有字段* create time: 2019-06-08 19:57** @param* @return*/public User(Long rowId, String loginName, String password, String realName, String telPhone, String emailAddress, Date createDate, Date loginTime, Integer loginCount, String isVal) {this.rowId = rowId;this.loginName = loginName;this.password = password;this.realName = realName;this.telPhone = telPhone;this.emailAddress = emailAddress;this.createDate = createDate;this.loginTime = loginTime;this.loginCount = loginCount;this.isVal = isVal;}public Long getRowId() {return rowId;}public void setRowId(Long rowId) {this.rowId = rowId;}public String getLoginName() {return loginName;}public void setLoginName(String loginName) {this.loginName = loginName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getRealName() {return realName;}public void setRealName(String realName) {this.realName = realName;}public String getTelPhone() {return telPhone;}public void setTelPhone(String telPhone) {this.telPhone = telPhone;}public String getEmailAddress() {return emailAddress;}public void setEmailAddress(String emailAddress) {this.emailAddress = emailAddress;}public Date getCreateDate() {return createDate;}public void setCreateDate(Date createDate) {this.createDate = createDate;}public Date getLoginTime() {return loginTime;}public void setLoginTime(Date loginTime) {this.loginTime = loginTime;}public Integer getLoginCount() {return loginCount;}public void setLoginCount(Integer loginCount) {this.loginCount = loginCount;}public String getIsVal() {return isVal;}public void setIsVal(String isVal) {this.isVal = isVal;}
}

三、继承TKMybatis的Mapper接口

package com.yuq.sunrise.mapper;import com.yuq.sunrise.model.User;
import tk.mybatis.mapper.common.Mapper;import java.util.List;
import java.util.Map;/*** create by: yuq* description: TODO(数据库操作层)* create time: 2019-06-09 14:30*/
public interface IUserMapper extends Mapper<User> {/****************************************** 以下为自定义Mapper *****************************************/List<User> queryAllByLimit(Map<String, Object> params);}

注:这里的 queryAllByLimit 方法是我的自定义方法,该方法不能与Mapper重复,否则会报错。

四、在Application类上配置@MapperScan

package com.yuq.sunrise;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;@SpringBootApplication
@MapperScan("com.yuq.sunrise.mapper")
public class SunriseApplication {public static void main(String[] args) {SpringApplication.run(SunriseApplication.class, args);}}

五、在application.yml或properties中配置mapper.xml

########################################################
### mybatis配置
########################################################
mybatis:config-location: classpath:mybatis/mybatis-config.xmlmapper-locations: classpath:mybatis/mappers/*.xmltype-aliases-package: com.yuq.sunrise.model

六、测试

package com.yuq.sunrise.mapper;import com.yuq.sunrise.model.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.HashMap;
import java.util.List;
import java.util.Map;@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {@Autowiredprivate IUserMapper userMapper;@Testpublic void testUserMapper() throws Exception {//example1 mapper.selectUser userExample1 = new User();userExample1.setRealName("超级管理员");List<User> userListReturn1 = userMapper.select(userExample1);System.out.println("example1 :" + userListReturn1.size());//example2 mapper.selectAllList<User> userListReturn2 = userMapper.selectAll();System.out.println("example2 :" + userListReturn2.size());User userExample3 = new User();userExample3.setRowId(8L);Integer numReturn3 = userMapper.delete(userExample3);System.out.println("example3 :" + numReturn3);User userExample4 = new User();userExample4.setLoginName("abab");userExample4.setPassword("aaa");userExample4.setIsVal("0");Integer numReturn4 = userMapper.insert(userExample4);System.out.println("example4 :" + numReturn4);User userExample5 = new User();userExample5.setLoginName("abab");userExample5.setPassword("aaa");userExample5.setIsVal("0");userExample5.setRealName("呵呵");userExample5.setRowId(15L);Integer numReturn5 = userMapper.updateByPrimaryKey(userExample5);System.out.println("example5 :" + numReturn5);/********************以上为Mapper中默认的接口**********************//********************以下是自定义接口**********************/Map<String, Object> paramExample6 = new HashMap<String, Object>();paramExample6.put("offset",1);paramExample6.put("limit",5);List<User> userExample6 = userMapper.queryAllByLimit(paramExample6);System.out.println(userExample6.size());}}

注意:自定义的mapper如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yuq.sunrise.mapper.IUserMapper"><!-- 自定义业务sql, begin --><resultMap id="dataMap" type="com.yuq.sunrise.model.User"><result column="ROW_ID" property="rowId"/><result column="LOGIN_NAME" property="loginName"/><result column="PASSWORD" property="password"/><result column="REAL_NAME" property="realName"/><result column="TEL_PHONE" property="telPhone"/><result column="EMAIL_ADDRESS" property="emailAddress"/><result column="CREATE_DATE" property="createDate"/><result column="LOGIN_TIME" property="loginTime"/><result column="LOGIN_COUNT" property="loginCount"/><result column="IS_VAL" property="isVal"/></resultMap><sql id="Base_Column_List">`ROW_ID`,`LOGIN_NAME`,`PASSWORD`,`REAL_NAME`,`TEL_PHONE`,`EMAIL_ADDRESS`,`CREATE_DATE`,`LOGIN_TIME`,`LOGIN_COUNT`,`IS_VAL`</sql><select id="queryAllByLimit" resultMap="dataMap">select<include refid="Base_Column_List" />from USER_INFO<if test="offset != null and limit != null">limit #{offset}, #{limit}</if></select><!-- 自定义业务sql, end --></mapper>

 

转载于:https://my.oschina.net/yq0128/blog/3059853

这篇关于SpringBoot集成TkMybatis插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298381

相关文章

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

Java CompletableFuture如何实现超时功能

《JavaCompletableFuture如何实现超时功能》:本文主要介绍实现超时功能的基本思路以及CompletableFuture(之后简称CF)是如何通过代码实现超时功能的,需要的... 目录基本思路CompletableFuture 的实现1. 基本实现流程2. 静态条件分析3. 内存泄露 bug

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插