为什么我一直向同事推荐tk-mybatis,因为这个确实好用呀。由于培训机构的原因,大部分人都懂逆向工程的Mybatis,但是看很多人都是懂那种逆向直接生成mapper的,里面包含sql的,其实这种不好,如果数据库有字段的变动,很不友好。
tk-mybatis就解决了这个痛点,使用一套泛型和注解解决了基本的单表操作,使得字段变更只需要在实体增减字段即可。
项目整体结构图:

依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.loger.tkmapper</groupId>
<artifactId>tkmapper</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<!--<dependency>-->
<!--<groupId>com.github.pagehelper</groupId>-->
<!--<artifactId>pagehelper</artifactId>-->
<!--<version>5.1.1</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</project>
下面是tk-mybatis配置类(主要):
MybatisConfig.java
package com.loger.common.config;
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.util.Properties;
/**
* @author Loger
* Date: 2018-08-13
* TIme: 15:44
* Description :
*/
@Configuration
public class MybatisConfig {
@Resource
private DataSource dataSource;
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
// bean.setTypeAliasesPackage("");
//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("mappers/*.xml"));
return bean.getObject();
}
@Configuration
@AutoConfigureAfter(MybatisConfig.class)
public static class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfig() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage("com.loger.mapper.*");
//配置通用mappers
Properties properties = new Properties();
properties.setProperty("notEmpty", "false");
properties.setProperty("IDENTITY", "MYSQL");
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
}
/**
* 配置mybatis的分页插件pageHelper
* @return
*/
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("offsetAsPageNum","true");
properties.setProperty("rowBoundsWithCount","true");
properties.setProperty("reasonable","true");
//指定为MySQL数据库
properties.setProperty("helperDialect","mysql");
pageHelper.setProperties(properties);
return pageHelper;
}
}
springboot配置文件:application.properties
server.port=8080
\# 开发环境不同的配置项可单独在 application-dev.properties 中指定
spring.profiles.active=dev
\# session
#server.session.timeout=86400
server.servlet.session.timeout=86400ms
\# Aop
spring.aop.auto=true
spring.aop.proxy-target-class=true
\# database #
spring.datasource.url=jdbc:mysql://192.168.113.128:3306/db_learn?useUnicode=true&characterEncoding=utf8&useLegacyDatetimeCode=false
spring.datasource.username= loger
spring.datasource.password= 0668Apple...
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
太细节的整合我这里就不详细讲了,因为不是本章节的主要内容。本章节主要内容在MybatisConfig.java以及pagehelper的版本依赖(整合时一直报错,后来才发现是版本问题)。
这里附上项目github地址:https://github.com/logerchen/springboot-tkmybatis-tkmapper
网友评论