springboot整合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的操作,然后将执行结果作为插入的主键执行插入操作.

你可能感兴趣的:(java,mybatis,springboot,mysql,uuid)