暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Spring Boot 集成 TkMyBatis

TechStyle 2021-03-18
1105

Project Directory


Maven Dependency

<?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>org.fool</groupId>
<artifactId>springboot-demo</artifactId>
<version>1.0-SNAPSHOT</version>


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/>
</parent>


<properties>
<pagehelper-spring-boot-starter.version>1.2.13</pagehelper-spring-boot-starter.version>
<mybatis-spring-boot-starter.version>2.1.4</mybatis-spring-boot-starter.version>
<mapper-spring-boot-starter.version>2.1.5</mapper-spring-boot-starter.version>
<mapper.version>4.1.5</mapper.version>
<druid-spring-boot-starter.version>1.1.24</druid-spring-boot-starter.version>
</properties>


<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>


<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>


<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>


<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper-spring-boot-starter.version}</version>
</dependency>


<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>


<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${mapper-spring-boot-starter.version}</version>
</dependency>


<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>


<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-boot-starter.version}</version>
</dependency>
</dependencies>


<build>
<finalName>${artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>sql/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
    </build>
</project>


application.properties

server.port=8080


spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true


mybatis.type-aliases-package=org.fool.springboot.model
mybatis.mapper-locations=classpath:mapper/**/*.xml


spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useLegacyDatetimeCode=false&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=50
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.filters=stat,wall
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
spring.datasource.druid.use-global-data-source-stat=true


配置 MyBatis Generator

schema.sql

CREATE TABLE `tb_schedule` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`schedule_name` varchar(100) NOT NULL,
`schedule_desc` varchar(100) NOT NULL,
`create_by` varchar(30) NOT NULL,
`update_by` varchar(30) NOT NULL,
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (`id`)
);


INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(1, 'schedule1', 'schedule desc1', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(2, 'schedule2', 'schedule desc2', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(3, 'schedule3', 'schedule desc3', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(4, 'schedule4', 'schedule desc4', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(5, 'schedule5', 'schedule desc5', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(6, 'schedule6', 'schedule desc6', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(7, 'schedule7', 'schedule desc7', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(8, 'schedule8', 'schedule desc8', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(9, 'schedule9', 'schedule desc9', 'admin', 'admin', '2021-03-18 05:49:20.680000000', '2021-03-18 05:49:20.680000000');
INSERT INTO tb_schedule(id, schedule_name, schedule_desc, create_by, update_by, create_time, update_time)
VALUES(10'schedule10''schedule desc10''admin''admin''2021-03-18 05:49:20.680000000''2021-03-18 05:49:20.680000000');


generatorConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry
location="/Users/${user.name}/.m2/repository/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar"/>


<context id="mysql" targetRuntime="MyBatis3">


<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<property name="caseSensitive" value="true"/>
</plugin>


<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>


<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull&amp;useLegacyDatetimeCode=false&amp;serverTimezone=Asia/Shanghai"
userId="root"
password="123456">
</jdbcConnection>


<javaModelGenerator targetPackage="org.fool.springboot.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>


<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>


<javaClientGenerator targetPackage="org.fool.springboot.dao.mapper" targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>


<table tableName="tb_schedule" domainObjectName="Schedule"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
    </context>
</generatorConfiguration>


mybatis-generator:generate -e


运行后会自动生成

Schedule.java

ScheduleMapper.java

ScheduleMapper.xml


SRC

application.java

ScheduleBO.java

ScheduleDTO.java

ScheduleController.java


主要查询逻辑 ScheduleService.java

查一个:selectOneByExample

查多个:selectByExample

分页查询:PageHelper


Test

curl http://localhost:8080/schedule/find_by_schedule_name/schedule1

curl http://localhost:8080/schedule/find_by_operator/admin

curl http://localhost:8080/schedule/find_by_pagination/2/5



泰克风格 只讲干货 不弄玄虚

文章转载自TechStyle,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论