整合MybatisPlus
1.导入依赖
<!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>2.5.4</version> </dependency> <!-- Mybatis Plus依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency>
2.在配置文件中添加数据库连接和mybatisplus设置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://地址:端口号/数据库名称?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8&useSSL=false spring.datasource.username=账号 spring.datasource.password=密码 #mybaties-plus配置 #mapper文件位置 mybatis-plus.mapper-locations=classpath*:/mybatis/*.xml #实体别名配置 mybatis-plus.type-aliases-package=com.example.mybatisplus.*.entity #驼峰命名映射 mybatis-plus.configuration.map-underscore-to-camel-case=true #关闭二级缓存 mybatis-plus.configuration.cache-enabled=false #数据库类型 mybatis-plus.global-config.db-config.db-type=mysql #主键生成策略 mybatis-plus.global-config.db-config.id-type=auto #表名下划线命名默认true mybatis-plus.global-config.db-config.table-underline=true #表前缀 mybatis-plus.global-config.db-config.table-prefix=t_ #逻辑已删除值(默认为 Y) mybatis-plus.global-config.db-config.logic-delete-value=1 #逻辑未删除值(默认为 N) mybatis-plus.global-config.db-config.ogic-not-delete-value=0 #逻辑删除字段(实体属性名) 需要在对应表字段上添加 @TableLogic mybatis-plus.global-config.db-config.logic-delete-field=is_deleted
3.在主启动类中添加mapper的扫描
@MapperScan({"com.example.mybatisplus.mapper"})
4.配置config文件
@Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor()); return mybatisPlusInterceptor; } @Bean public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(); paginationInterceptor.setOverflow(true); return paginationInterceptor; } }
代码生成器
1.导入依赖
<!-- mybatis plus 代码生成器依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency> <!-- 模板引擎 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency>
2.编写生成规则
public class MysqlGenerator { public static void main(String[] args) { // 1、创建代码生成器 AutoGenerator mpg = new AutoGenerator(); // 2、全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src"); gc.setAuthor("mysql gen"); //生成后是否打开资源管理器 gc.setOpen(false); //重新生成时文件是否覆盖 gc.setFileOverride(false); //去掉Service接口的首字母I gc.setServiceName("%sService"); //主键策略 gc.setIdType(IdType.AUTO); //定义生成的实体类中日期类型 gc.setDateType(DateType.ONLY_DATE); //开启Swagger2模式 gc.setSwagger2(true); mpg.setGlobalConfig(gc); // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://数据库地址:端口号/数据库名称?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8&useSSL=false"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("账号"); dsc.setPassword("密码"); dsc.setDbType(DbType.MYSQL); mpg.setDataSource(dsc); // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setModuleName("busi"); pc.setParent("com.hj"); pc.setController("controller"); pc.setEntity("entity"); pc.setService("service"); pc.setMapper("mapper"); mpg.setPackageInfo(pc); // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setInclude( 数据库中的表名 );//设置要映射的表名 //数据库表映射到实体的命名策略 strategy.setNaming(NamingStrategy.underline_to_camel); //设置表前缀不生成 strategy.setTablePrefix("t_"); //数据库表字段映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // lombok 模型 //@Accessors(chain = true) setter链式操作 strategy.setEntityLombokModel(true); //restful api风格控制器 strategy.setRestControllerStyle(true); //url中驼峰转连字符 strategy.setControllerMappingHyphenStyle(true); mpg.setStrategy(strategy); // 6、执行 mpg.execute(); } }