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>

源碼地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章