SpringBoot 整合TKMapper

说明

TKMapper(通用mapper,以下简称tk)。
由于TKMapper有以下特性,值得研究是否有必要引入作公司内部框架,提高开发效率

优势

1、 不再需要用户手写单表的CRUD
2、 相比于公司的工具,不再需要生成单表的Example相关的类,精简了代码
3、 提供MBG工具生成实体类和简单的Mapper和xml,这个Mapper和Xml内用户可以添加自己的sql代码

添加依赖

<!-- mysql驱动 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.34</version>
</dependency>
<!-- mybatis -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.0.0</version>
</dependency>
<!-- tk-mapper -->
<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper-spring-boot-starter</artifactId>
	<version>2.0.4</version>
</dependency>
<!-- lombok -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>
<!-- 分页插件 -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.2.10</version>
</dependency>
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper</artifactId>
	<version>5.1.7</version>
</dependency>

添加插件

<!--添加mybatis generator maven插件 -->
<plugin>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-maven-plugin</artifactId>
	<version>1.3.2</version>
	<configuration>
		<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
		<overwrite>true</overwrite>
		<verbose>true</verbose>
	</configuration>
	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper-generator</artifactId>
			<version>1.1.3</version>
		</dependency>
	</dependencies>
</plugin>

application.yml 配置

server:
  port: 8888
spring:
  application:
    name: demo
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.216.128:3306/wenjunDB?useSSL=false
    username: root
    password: 123456
mybatis:
  configuration:
    map-underscore-to-camel-case: true
mapper:
  identity: MYSQL # 配置主键自动增长(使用MYSQL原生方式)
logging:
  level:
    com.example.demo.web: debug
    
# 分页插件
pagehelper:
  reasonable: true
  page-size-zero: true
  params: pageNum=start;pageSize=limit
  support-methods-arguments: true

MapperScan

本文采用扫描packages的方式,或者也可以在生成的注解上使用@Mapper()注解。

@SpringBootApplication
@MapperScan(basePackages = {"com.example.demo.web.mapper"})
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

开始使用

以上环境搭建好之后,可以开始着手使用MBG生成代码。

  • 创建通用的Mapper接口
public interface DemoBaseMapper<T> extends BaseMapper<T>, ExampleMapper<T>, MySqlMapper<T> {

}
  • 进入项目目录,运行mvn mybatis-generator:generate -e生成实体类和Mapper文件
@Data
@Table(name = "`UserTable`")
public class Usertable implements Serializable {
    @Id
    @Column(name = "`id`")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "`name`")
    private String name;
   
}

<!--接口 内容 -->
public interface UsertableMapper extends DemoBaseMapper<Usertable> {

	/**
	 * 此方法由用户自定义, 同步需要在xml中添加相应的sql,或者使用注解
	 * 
	 * @return
	 */
	@Select("select * from UserTable where name like CONCAT('%',#{name},'%')")
	public Usertable getUserByName(@Param("name") String name);
}
<?xml version="1.0" encoding="UTF-8" ?>

<!--xml 内容 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.web.mapper.UsertableMapper" >
  <resultMap id="BaseResultMap" type="com.example.demo.web.domain.Usertable" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="descrip" property="descrip" jdbcType="VARCHAR" />
    <result column="deleteflag" property="deleteflag" jdbcType="CHAR" />
    <result column="createtime" property="createtime" jdbcType="TIMESTAMP" />
    <result column="updatetime" property="updatetime" jdbcType="TIMESTAMP" />
    <result column="creater" property="creater" jdbcType="INTEGER" />
    <result column="updater" property="updater" jdbcType="INTEGER" />
  </resultMap>
</mapper>

以上就可以使用了,但是需要注意以下几点
1、 数据库采用的是mysql数据,主键id自动增长模式,所以新建数据时,id不需要用户传递,框架会自动更新改id到当前最大id+1
2、 MBG插件的url配置需要加上?nullCatalogMeansCurrent=true,否则自增失效
3、 Mapper接口一经生成,就算表结构变更都无需再生成,否则里面自定义的方法会被覆盖掉
4、 分页插件默认会对代码顺序下的第一条sql执行分页逻辑

<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
			connectionURL="jdbc:mysql://192.168.216.128:3306/wenjunDB?nullCatalogMeansCurrent=true" userId="root"
			password="123456">
</jdbcConnection>

源码地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值