Mybatis-plus自动生成代码
- 1.pom导入Mybatis Plus Generator依赖
- 2.新建一个类,编写main方法
- 3.具体解析
MP给我们提供的一个很强大的扩展功能就是自动生成代码,他可以帮助我们生成mapper,controller,service,serviceImpl…等许多没有技术含量的代码,下面看看怎么操作吧!!!
1.pom导入Mybatis Plus Generator依赖
<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></dependency>
除了导入 mybatis-plus-generator依赖外,还需要导入velocity模板,因为MP是按照这个模板来生成代码的!!!
模板默认使用的是velocity;
除了velocity外,还有Freemarker,Beet两个模板
2.新建一个类,编写main方法
public class Main {public static void main(String[] args) {//1.创建generator对象AutoGenerator autoGenerator = new AutoGenerator();//2.配置数据源DataSourceConfig dataSourceConfig = new DataSourceConfig();dataSourceConfig.setDbType(DbType.MYSQL);dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/exam?useSSL=false&useUnicode=true&characterEncoding=utf-8");dataSourceConfig.setUsername("root");dataSourceConfig.setPassword("root");dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");autoGenerator.setDataSource(dataSourceConfig);//3.全局配置(指明这些类生成的具体位置以及作者....)GlobalConfig globalConfig = new GlobalConfig();globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");globalConfig.setOpen(false);//不打开文件globalConfig.setAuthor("YangJiaWen");//让service名字前面没有IglobalConfig.setServiceName("%Service");autoGenerator.setGlobalConfig(globalConfig);//4.设置包信息(生成的类放在哪个包里面)PackageConfig packageConfig = new PackageConfig();packageConfig.setParent("com.jw");packageConfig.setModuleName("generator");packageConfig.setController("controller");packageConfig.setService("service");packageConfig.setServiceImpl("service.impl");packageConfig.setEntity("entity");autoGenerator.setPackageInfo(packageConfig);//5.配置策略StrategyConfig strategyConfig = new StrategyConfig();//提供lombokstrategyConfig.setEntityLombokModel(true);//支持驼峰strategyConfig.setNaming(NamingStrategy.underline_to_camel);strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);autoGenerator.setStrategy(strategyConfig);//6.执行autoGenerator.execute();}}
然后执行此main发方法,就会帮我们生成代码了!!!
注意:
- 这些模板不用自己编写,只需拷贝过去稍作修改即可!!!
- 有关一些模板配置的解释
System.getProperty(“user.dir”)作用是获取当前项目的根路径
-
我们发现此配置是生成一个数据库中的所有表,如果我们想生成部分表,该怎么办???
只需要添加一条即可,这里的include中的参数是你的表名,参数是可变参数,可以生成多个表strategyConfig.setInclude("user1","user2")
3.具体解析
通过图片我们可以发现,该生成器给我们自动生成了Service接口,以及实现类…
下面我们拿个简单类来分析一下
点进去进去发现:
LoginUserService继承了Iservice接口,
LoginuserServiceImpl 继承 ServiceImpl<LoginuserMapper, Loginuser>并实现了 LoginUserService接口
这里的Iservice接口和ServiceImpl<LoginuserMapper, Loginuser>是代码生成器已经帮我们生成好了的,我们点进去发现
他这两个类中已经给我们封装了BaseMapper中的方法,我们只需要在controller中注入LoginUserService即可;
如果我们是想要在service层编写自己的一些业务操作,那么在loginUserService接口中或者实现类中增加即可!!!
最后的最后,有一个小细节,很重要,那就是一定要在springboot的启动类上加上@MapperScan注解,属性值填你生成的代码的路径,注意,如果漏掉了这一步,那么springboot是不会识别到你的mapper的,启动会报错;
拿刚才那个例子: