mybatis 通用mapper,generator代码生成器,generator 生成 lombok(开发工具:idea,配置:application.properties)

相关文档:https://github.com/abel533/Mapper

目前在持久层框架上有 MyBatis 和 Spring Data JPA 两个选择, MyBatis 应用比较广泛,特别灵活,但是写映射文件比较繁琐。使用Generator后,一般的代码模板都是能够自动生成的,需要手写的部分比较少,加上通用mapper后就更加方便了。 Spring Data JPA 用起来比较简单,而且与 Spring Boot 整合起来非常好用。

以下代码github地址:https://github.com/LiWang1314/demo

一.pom.xml 新增



    tk.mybatis
    mapper
    4.0.3


    mysql
    mysql-connector-java
    runtime
    8.0.14



    org.mybatis.generator
    mybatis-generator-core
    1.3.7
    compile
    true



    org.mybatis.generator
    mybatis-generator-maven-plugin
    1.3.7
    
        ${basedir}/src/main/resources/generator/generatorConfig.xml
        true
        true
    
    
        
            mysql
            mysql-connector-java
            8.0.14
        
        
            tk.mybatis
            mapper
            4.1.5
        
    

注意:

1:mysql5用的驱动url是com.mysql.jdbc.Driver,mysql6以后用的是com.mysql.cj.jdbc.Driver。版本不匹配便会报驱动类已过时的错误。我的为mysql8

2:如果报下面的错:

The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

原因是没有指定时区jdbc:mysql://localhost:3306/**?serverTimezone=GMT%2B8 

二.定义自己的基础接口,也可以不定义。会影响generatorConfig.xml中的配置,和生成mapper接口(dao层)默认继承的父类,application.properties中的 mapper.mappers配置

1:如果定义自己的基础接口,则generatorConfig.xml中的对应的配置

生成的mapper接口(dao层)则默认继承MyMapper接口

特别注意:如果你定义了一个自己的基础接口,该接口不能被扫描到,否则会出错

定义自己的基础接口:

package com.example.transfer.mappers;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
/*
Mapper接口:基本的增、删、改、查方法
MySqlMapper:针对MySQL的额外补充接口,支持批量插入
*/
public interface MyMapper extends Mapper,MySqlMapper {

}

 2.反之:

三.在resources目录下->创建generator目录->创建generatorConfig.xml

注意: mappers的value值配置的对应的接口地址,生成的 Mapper 接口都会自动继承上该接口




    
    
    
    
        
        
        
       
            
            
            
            
        

        
        
        
          
            
        
        
        
            
            
            
            
        
        
          
              
          
        
         
             
         
        
        

四.开始生成(ide右边栏,如果找不到则点击工具栏view ,选中 tool buttons即可):

mybatis 通用mapper,generator代码生成器,generator 生成 lombok(开发工具:idea,配置:application.properties)_第1张图片

注意:如果需要生成model的时候生成lombok的注解,需要在generatorConfig.xml中添加配置,并且在pom.xml中添加依赖


    org.projectlombok
    lombok
    1.18.6
    provided

idea lombok不生效问题请参考:https://blog.csdn.net/lwang_IT/article/details/83016597

六.生成结果

mapper接口(dao层)

package com.example.transfer.dao;

import com.example.transfer.entity.FS;
import com.example.transfer.mappers.MyMapper;

public interface FSMapper extends MyMapper {
}

 还有对应的实体类 

package com.example.transfer.entity;
import java.util.Date;
import javax.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@Table(name = "fs")
public class FS {
    @Id
    private Integer id;
    /**
     * 店名
     */
    private String name;
    /**
     * 省
     */
    @Column(name = "state_id")
    private Integer stateId;
}

 .xml文件




  
    
    
    
    
  

注意:通用mapper还不能满足全部的数据库操作,一般还需要其他的自定义方法在接口中添加其他方法的时候和只用 MyBatis 是完全一样的,但是需要注意,在对应的 XML 中,不能出现和继承接口中同名的方法!

比如我们要增加一个自己的的方法则:

 .xml文件




  
    
    
    
    
  
  
    INSERT INTO `fs`( `name`) VALUES (#{name});
  

mapper接口(dao层)

package com.example.transfer.dao;
import com.example.transfer.entity.FS;
import com.example.transfer.mappers.MyMapper;
public interface FSMapper extends MyMapper {
    int insertA(FS fs);
}

七.application.properties新增

#通用mapper的所在接包名接口名称
mapper.mappers=com.example.transfer.mappers.MyMapper

#如果没有自定义基础类
#mapper.mappers=tk.mybatis.mapper.common.Mapper 
#数据库
mapper.identity=MYSQL 



mybatis.typeAliasesPackage=com.example.transfer.entity
mybatis.mapperLocations=classpath:mybatis/mapper/*Mapper.xml
#打印sql
logging.level.com.example.transfer.dao=debug

 

 八.运行

在启动类上扫描mapper接口(dao层)

@tk.mybatis.spring.annotation.MapperScan(basePackages = "com.example.transfer.dao")

 调用:

	@RequestMapping(value="test.do")
	@ResponseBody
	public void Test(){
        //通用
		List list=fsMapper.selectAll();
		log.info("size:"+list.size());
		FS fs=new FS();
		fs.setName("姓名");
        //自己
		int addCount=fsMapper.insertA(fs);
		log.info("测试添加"+addCount);
	}

 

你可能感兴趣的:(springboot)