首先,关于这部分的知识,可以先参考官方文档。
Mybatis-Plus生成代码
首先是使用Mybatis-plus根据数据库的连接生成代码:
先导入maven依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency><!-- 模板引擎 -->
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
写一个main方法进行生成:
package com.example;
import com.baomidou.mybatisplus.annotation.DbType;
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.rules.NamingStrategy;
public class Main {
public static void main(String[] args) {
//创建generator对象
AutoGenerator autoGenerator = new AutoGenerator();
//数据源(连接)
DataSourceConfig config = new DataSourceConfig();
config.setDbType(DbType.MYSQL);
config.setUrl("jdbc:mysql://localhost:3306/your-database?useSSL=false&characterEncoding=utf8&serverTimezone=Hongkong");
config.setUsername("root");
config.setPassword("123456");
config.setDriverName("com.mysql.cj.jdbc.Driver");
autoGenerator.setDataSource(config);
//全局配置(文件的目录)
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置生成的路径
globalConfig.setOpen(false);
globalConfig.setAuthor("dyc");
globalConfig.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
globalConfig.setServiceName("%sService"); //%s 会自动填充表实体属性(这样生成的就是xxxService)
// globalConfig.setIdType(IdType.AUTO); //设置主键策略
autoGenerator.setGlobalConfig(globalConfig);
//包信息(指定生成代码的包路径)
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.dyc");
packageConfig.setModuleName("generator3");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setMapper("mapper"); //记得加@Mapper注解
packageConfig.setEntity("entity");
autoGenerator.setPackageInfo(packageConfig);
//配置策略(指定需要生成哪些表或者排除哪些表)
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setEntityLombokModel(true); //使用lombok
//数据库表映射到实体的命名策略
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
//设置生成的是RestController
strategyConfig.setRestControllerStyle(true);
//是否生成实体时,生成字段配置 即在字段属性上加上@TableField("")注解
strategyConfig.setEntityTableFieldAnnotationEnable(true);
// strategyConfig.setTablePrefix("t_") //设置table的前缀
//strategyConfig.setChainModel(true);
//输入表名!多个英文逗号分割
strategyConfig.setInclude("table1","table2");
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();
}
}
确认好了连接,然后就是执行main方法,就可以看到生成的包了。
点进去就可以看到详情了:
例如UserController:
/**
* <p>
* 前端控制器
* </p>
*
* @author dyc
* @since 2021-04-05
*/
@RestController
@RequestMapping("/generator3/user")
public class UserController {
}
/**
* <p>
* 服务实现类
* </p>
*
* @author dyc
* @since 2021-04-05
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
/**
* <p>
* Mapper 接口
* </p>
*
* @author dyc
* @since 2021-04-05
*/
public interface DiaryMapper extends BaseMapper<Diary> {
}
不过,当我看了其他人的后,确实配置这里还可以更加简洁:
//全局配置
GlobalConfig config = new GlobalConfig();
config.setActiveRecord(true) //是否支持AR模式
.setAuthor("weiyunhui") //作者
.setOutputDir("D:\\workspace_my\\mp03\\src\\main\\java")
//生成路径
.setFileOverride(true)//文件覆盖
.setServiceName("%sService") //设置生成的service接口名首字母是否为I
.setIdType(IdType.AUTO); //主键策略
//数据源配置
DataSourceConfig dsConfig = new DataSourceConfig();
dsConfig.setDbType(DbType.MYSQL)
.setUrl("jdbc:mysql://localhost:3306/javaEE_0228")
.setDriverName("com.mysql.jdbc.Driver")
.setUsername("root")
.setPassword("1234");
//策略配置
StrategyConfig stConfig = new StrategyConfig();
stConfig.setCapitalMode(true) // 全局大写命名
.setDbColumnUnderline(true) //表名 字段名 是否使用下滑线命名
.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
.setInclude("tbl_employee") //生成的表
.setTablePrefix("tbl_"); // 表前缀
//包名策略
PackageConfig pkConfig = new PackageConfig();
pkConfig.setParent("com.atguigu.mp")
.setController("controller")
.setEntity("beans")
.setService("service");
AutoGenerator ag = new AutoGenerator().setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setPackageInfo(pkConfig);
ag.execute();
}
MybatisX插件的使用
以前一直使用的是mybatis,然后用的是free mybatis plugin。现在学了mybatis-plus才知道他有多么的方便。
【注意不要和free mybatis plugin一起用】
- XML代码跳转
- 生成代码
这个以前没有发现,原来可以直接就生成实体类mapper和service
-
JPA提示
我自己没怎么练习过用xml写SQL,以前总觉得麻烦,就都是用的注解的方式。
但是使用xml的话,可以更加方便的写SQL语句,可以使用那些标签语句(主要也是我没怎么练习…)我就直接上官方的GIF了:
例如生成sql:
(其他的就可以直接看官方文档了,这么好用O,当然得自己试试哈)
就是自己先写一段语句后再按Alt+Insert就会有提示
不过这里也要注意,就是想要出现提示就必须要符合规范: