前言
本文主要给大家介绍了关于spring boot整合mybatis利用Mysql实现主键UUID的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
实现
基础项目的pom.xml部分代码如下
1.8
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-test
test
commons-codec
commons-codec
org.apache.commons
commons-lang3
3.6
com.google.guava
guava
23.0
mysql
mysql-connector-java
runtime
org.mybatis
mybatis-spring
1.3.1
org.mybatis
mybatis
3.4.5
tk.mybatis
mapper
3.4.2
com.github.pagehelper
pagehelper
4.2.1
com.alibaba
fastjson
1.2.44
com.alibaba
druid-spring-boot-starter
1.1.6
具体的mybatis配置如下
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage(MAPPER_PACKAGE);
//配置通用Mapper,详情请查阅官方文档
Properties properties = new Properties();
properties.setProperty("mappers", MAPPER_INTERFACE_REFERENCE);
properties.setProperty("notEmpty", "true");//insert、update是否判断字符串类型!='' 即 test="str != null"表达式内是否追加 and str != ''
properties.setProperty("IDENTITY", "SELECT UUID()");//使用UUID作為主鍵
properties.setProperty("ORDER","BEFORE");//将查询主键作为前置操作
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
实体如下
public class User {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
@Column(name = "CREATED_BY")
private String createdBy;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "CREATED_DATE")
private Date createdDate;
@Column(name = "LAST_MODIFIED_BY")
private String lastModifiedBy;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "LAST_MODIFIED_DATE")
private Date lastModifiedDate;
下面这一行代码是为了解决spring MVC在入参是Date类型时或出现异常的问题
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
测试
配置文件配置输出mybatis的sql日志
logging.level.com.你的dao或mapper包=debug
执行对应插入操作观察控制台
2018-03-06 17:59:22.612 DEBUG 6208 --- [nio-8686-exec-1] XXXXX: ==> Executing: SELECT UUID()
2018-03-06 17:59:22.629 DEBUG 6208 --- [nio-8686-exec-1] XXXXX: <== Total: 1
2018-03-06 17:59:22.651 DEBUG 6208 --- [nio-8686-exec-1] XXXXX: ==> Preparing: INSERT INTO user ( ID,USER_NAME,NICK_NAME,PWD_SALT,PWD_LOGIN,CREATED_BY,CREATED_DATE,LAST_MODIFIED_BY,LAST_MODIFIED_DATE,ACCOUNT_TYPE,ACCOUNT_LOCKED,ONLINE_STATUS,GROUP_ID,GROUP_NAME ) VALUES( ?,?,?,?,? )
2018-03-06 17:59:22.665 DEBUG 6208 --- [nio-8686-exec-1] XXXXX: ==> Parameters: 0b97ad1b-2125-11e8-9b42-704d7b7036d3(String), 2(String), 2018-01-01 01:07:05.0(Timestamp), 2(String), 2018-01-01 01:07:05.0(Timestamp)
2018-03-06 17:59:22.670 DEBUG 6208 --- [nio-8686-exec-1] XXXXX: <== Updates: 1
可以看到,首先执行了查询UUID的操作,然后将执行结果作为插入的主键执行插入操作.
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。