首页 > 其他 > 详细

mybatis-plus的使用

时间:2020-08-30 21:20:36      阅读:74      评论:0      收藏:0      [点我收藏+]

主配置

代码生成器所需要的依赖

<!-- mybatis-plus -->
	<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.3.0</version>
		</dependency>
    <!-- 自动依赖 -->
    <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.0</version>
        </dependency>
	<!-- mp模板 -->
	<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
    </dependency>
    <!-- slf4j -->
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>

代码生成类

package com.lcx;
import java.util.ArrayList;
import java.util.List;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;



public class AutoCode {

	public static void main(String[] args) {
		String property = System.getProperty("user.dir");//获取当前用户目录
		//全局配置
		GlobalConfig gc = new GlobalConfig();
		gc.setActiveRecord(true);//支持ar
		gc.setOutputDir(property+"/src/main/java");//指定代码生成位置
        gc.setFileOverride(true); //是否覆盖已有文件
        gc.setBaseResultMap(true); //XML是否需要BaseResultMap
        gc.setBaseColumnList(true); //XML是否显示字段
        gc.setControllerName("%sController");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        gc.setAuthor("liuchenxin");
        gc.setIdType(IdType.AUTO);
        gc.setSwagger2(true);
       
		
        
      //设置数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("...");
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setDbType(DbType.MYSQL);//指定数据库类型
        
      //策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        //strategyConfig.setTablePrefix("tab_"); //不生成表名前缀
        strategyConfig.setInclude("user");//设置要生成的数据表对应的类
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);//表名转_
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//字段转_
        strategyConfig.setEntityLombokModel(true);//自动lombok

        //逻辑删除
        strategyConfig.setLogicDeleteFieldName("deleted");
        //自动填充
        TableFill fill = new TableFill("create_time",FieldFill.INSERT);
        TableFill fill2 = new TableFill("update_time",FieldFill.INSERT_UPDATE);
        List<TableFill> list = new ArrayList<>();
        list.add(fill);
        list.add(fill2);
        strategyConfig.setTableFillList(list);
        //乐观锁
        strategyConfig.setVersionFieldName("version");
        
        
      //生成包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.lcx");
        pc.setEntity("bean");
        pc.setController("controller");
        pc.setService("service");
        pc.setServiceImpl("serviceImpl");
        pc.setMapper("mapper");
        pc.setXml("mapper");
        //创建代码生成器
        AutoGenerator generator=new AutoGenerator();
        //把以上配置加入到生成器里面
        generator.setGlobalConfig(gc);//添加全局配置
        generator.setDataSource(dataSourceConfig);//添加数据源配置
        generator.setStrategy(strategyConfig);//添加策略配置
        generator.setPackageInfo(pc);//添加包配置
   
        //执行代码生成器
        generator.execute();
	}

}

配置类

package com.lcx.config;


import java.util.Date;

import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
@EnableTransactionManagement
@Configuration
public class MPconfig {
	//配置自动填充组件
	@Bean
	public MetaObjectHandler handler(){
		MetaObjectHandler metaObjectHandler = new MetaObjectHandler(){

			@Override
			public void insertFill(MetaObject metaObject) {
				// TODO Auto-generated method stub
				this.setFieldValByName("createTime",new Date(),metaObject);
		        this.setFieldValByName("updateTime",new Date(),metaObject);
			}

			@Override
			public void updateFill(MetaObject metaObject) {
				// TODO Auto-generated method stub
				this.setFieldValByName("updateTime",new Date(),metaObject);
			}
			
		};
		return metaObjectHandler;
	}
	
	//乐观锁插件
	@Bean
	public OptimisticLockerInterceptor optimisticLockerInterceptor(){
		return new OptimisticLockerInterceptor();
	}
	
	@Bean//配置分页插件
	public PaginationInterceptor paginationInterceptor() {

	    return new PaginationInterceptor();
	}
	//3.3.0之后逻辑删除组件不用配置
}

主配置文件

spring.datasource.username=root
spring.datasource.password=94847361
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#开启mybatis-plus的日志功能
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#配置逻辑删除,被删为1,未删为0
mybatis-plus.global-config.db-config.logic-delete-field=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

踩坑记

1,代码自动生成之后,需要在mapper接口添加@mapper注解

2,调用crud方法时注入的是service层

3,在控制器里面如果类上有requestmapping注解,那么访问路径需要加上这个路径

4,如果不想使用MP生成的id,就在bean的id上写auto,如果不生效,一定记得把id类型改为integer,Long类型是不生效的

mybatis-plus的使用

原文:https://www.cnblogs.com/lcxtm/p/13586428.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!