一,引入依赖
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 阿里巴巴连接池Druid -->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.7</version>
</dependency>
<!-- mybatis -->
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.4</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.7</version>
</dependency>
<!-- pagehelper -->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
二,pom引入逆向工程mybatis-generator插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.3.RELEASE</version>
</plugin>
<!-- MyBatis 逆向工程 插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.4</version>
</dependency>
</dependencies>
<configuration>
<!-- 允许移动生成的文件 -->
<verbose>true</verbose>
<!-- 是否覆盖 -->
<overwrite>true</overwrite>
<!-- 配置文件 -->
<configurationFile>
src/main/resources/generatorConfig.xml
</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
三,application.properties配置文件
##################### mybatis ###############################
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.typeAliasesPackage=com.entity
mybatis.mapperLocations=classpath*:/com/mapper/**/*.xml
mybatis.configuration.use-generated-keys=true
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
##################### Druid ##################################
spring.datasource.url=jdbc:mysql://localhost:3306/weixin?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 下面为连接池的补充设置,应用到上面所有数据源中
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#这个过滤器有个小坑,会影响自定义批量sql,相关可以看我的另外一篇文章https://blog.csdn.net/cmw1085215666/article/details/101380207
spring.datasource.filters=stat,wall,log4j
spring.datasource.logSlowSql=true
四,创建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>
<!--数据库驱动jar -->
<!--<classPathEntry-->
<!--location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.45" />-->
<context id="Tables" targetRuntime="MyBatis3">
<!--去除注释 -->
<!--<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>-->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
<property name="caseSensitive" value="true"/>
</plugin>
<!--数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/weixin" userId="root"
password="root">
</jdbcConnection>
<!--默认false Java type resolver will always use java.math.BigDecimal if
the database column is of type DECIMAL or NUMERIC. -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--生成实体类 指定包名 以及生成的地址 (可以自定义地址,但是路径不存在不会自动创建 使用Maven生成在target目录下,会自动创建) -->
<javaModelGenerator targetPackage="com.entity"
targetProject="src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--生成SQLMAP文件 -->
<sqlMapGenerator targetPackage="com.mapper"
targetProject="src\main\resources">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!--生成Dao文件 可以配置 type="XMLMAPPER"生成xml的dao实现 context id="DB2Tables" 修改targetRuntime="MyBatis3" -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.dao"
targetProject="src\main\java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!--对应数据库表 mysql可以加入主键自增 字段命名 忽略某字段等 -->
<table tableName="weixin_user" domainObjectName="WeixinUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
</context>
</generatorConfiguration>
五,运行mybatis-generator:generate生成实体及相关文件
dao
package com.dao;
import com.entity.WeixinUser;
import tk.mybatis.mapper.common.Mapper;
public interface WeixinUserMapper extends Mapper<WeixinUser> {
}
entity
package com.entity;
import java.util.Date;
import javax.persistence.*;
@Table(name = "weixin_user")
public class WeixinUser {
/**
* 主键自增ID
*/
@Id
@Column(name = "customer_id")
private Integer customerId;
@Column(name = "open_id")
private String openId;
private String unionid;
/**
* 昵称
*/
@Column(name = "nike_name")
private String nikeName;
/**
* 头像
*/
private String photo;
/**
* 个性签名
*/
private String motto;
/**
* 最后使用时间
*/
@Column(name = "last_login_time")
private Date lastLoginTime;
@Column(name = "create_time")
private Date createTime;
@Column(name = "update_time")
private Date updateTime;
/**
* 获取主键自增ID
*
* @return customer_id - 主键自增ID
*/
public Integer getCustomerId() {
return customerId;
}
/**
* 设置主键自增ID
*
* @param customerId 主键自增ID
*/
public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}
/**
* @return open_id
*/
public String getOpenId() {
return openId;
}
/**
* @param openId
*/
public void setOpenId(String openId) {
this.openId = openId == null ? null : openId.trim();
}
/**
* @return unionid
*/
public String getUnid() {
return unionid;
}
/**
* @param unionid
*/
public void setUnid(String unionid) {
this.unionid = unionid == null ? null : unionid.trim();
}
/**
* 获取昵称
*
* @return nike_name - 昵称
*/
public String getNikeName() {
return nikeName;
}
/**
* 设置昵称
*
* @param nikeName 昵称
*/
public void setNikeName(String nikeName) {
this.nikeName = nikeName == null ? null : nikeName.trim();
}
/**
* 获取头像
*
* @return photo - 头像
*/
public String getPhoto() {
return photo;
}
/**
* 设置头像
*
* @param photo 头像
*/
public void setPhoto(String photo) {
this.photo = photo == null ? null : photo.trim();
}
/**
* 获取个性签名
*
* @return motto - 个性签名
*/
public String getMotto() {
return motto;
}
/**
* 设置个性签名
*
* @param motto 个性签名
*/
public void setMotto(String motto) {
this.motto = motto == null ? null : motto.trim();
}
/**
* 获取最后使用时间
*
* @return last_login_time - 最后使用时间
*/
public Date getLastLoginTime() {
return lastLoginTime;
}
/**
* 设置最后使用时间
*
* @param lastLoginTime 最后使用时间
*/
public void setLastLoginTime(Date lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
/**
* @return create_time
*/
public Date getCreateTime() {
return createTime;
}
/**
* @param createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* @return update_time
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* @param updateTime
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
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.dao.WeixinUserMapper">
<resultMap id="BaseResultMap" type="com.entity.WeixinUser">
<!--
WARNING - @mbg.generated
-->
<id column="customer_id" jdbcType="INTEGER" property="customerId" />
<result column="open_id" jdbcType="VARCHAR" property="openId" />
<result column="unionid" jdbcType="VARCHAR" property="unionid" />
<result column="nike_name" jdbcType="VARCHAR" property="nikeName" />
<result column="photo" jdbcType="VARCHAR" property="photo" />
<result column="motto" jdbcType="VARCHAR" property="motto" />
<result column="last_login_time" jdbcType="TIMESTAMP" property="lastLoginTime" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
-->
customer_id, open_id, unionid, nike_name, photo, motto, last_login_time, create_time,
update_time
</sql>
</mapper>
CREATE TABLE `weixin_user` (
`customer_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增ID',
`open_id` varchar(256) NOT NULL,
`unid` varchar(256) NOT NULL,
`nike_name` varchar(256) NOT NULL COMMENT '昵称',
`photo` varchar(256) DEFAULT NULL COMMENT '头像',
`motto` varchar(512) DEFAULT NULL COMMENT '个性签名',
`last_login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后使用时间',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`customer_id`),
UNIQUE KEY `uk_id` (`open_id`,`unid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
六,使用tkmybatis项目相关注解
@MapperScan("com.dao")//扫描相关dao
@EntityScan(basePackages = {"com.entity"})//扫描相关实体