Loading

Mybatis-Plus代码生成器初体验

1.简介 

MyBatis Plus 在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis Plus 的核心功能有:支持通用的 CRUD、代码生成器与条件构造器。

2.引入依赖

	    <!-- mp 依赖 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus</artifactId>
			<version>2.3</version>
		</dependency>

		<!-- 代码生成:MP -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.1.2</version>
		</dependency>
		<!-- 代码生成:模板引擎MybatisPlus默认使用的是velocity模版引 -->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity-engine-core</artifactId>
			<version>2.1</version>
		</dependency>

3.配置文件

package com.util;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
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.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * MP代码生成工具
 * 
 * @author 鵬程萬里
 * @date 2019年8月21日 下午3:23:32
 */
public class MpGenerator {
	public static void main(String[] args) {
		AutoGenerator mpg = new AutoGenerator();
		// 获取项目路径
		String basePath = System.getProperty("user.dir");
		// 设置数据源
		mpg.setDataSource(new DataSourceConfig().setDriverName("com.mysql.jdbc.Driver")
				// 设置数据库类型
				.setDbType(DbType.MYSQL).setUsername("数据库账号").setPassword("数据库密码").setUrl("jdbc:mysql://数据库地址:3306/数据库名称?useUnicode=true&useSSL=false&characterEncoding=utf8"));

		// 全局配置
		mpg.setGlobalConfig(new GlobalConfig()
				// 输出目录
				.setOutputDir(basePath + "/src/main/java")
				// 是否覆盖
				.setFileOverride(true)
				// 开启AR模式
				.setActiveRecord(true)
				// XML二级缓存
				.setEnableCache(false)
				// 生成ResultMap
				.setBaseResultMap(true)
				// 生成 sql片段
				.setBaseColumnList(true)
				// 自动打开生成后的文件夹
				.setOpen(false)
				// 所有文件的生成者
				.setAuthor("yangpengcheng")
				// 自定义文件命名,%s会自动填充表实体类名字
				.setMapperName("%sMapper").setXmlName("%sMapper").setServiceName("I%sService").setServiceImplName("%sServiceImpl").setControllerName("%sController"));

		// 策略配置
		mpg.setStrategy(new StrategyConfig()
				// 需要生成的表
				.setInclude("sys_school")
				// 实体类使用Lombok
				.setEntityLombokModel(true)
				// 表名生成策略,下划线转驼峰
				.setNaming(NamingStrategy.underline_to_camel)
				// 去掉数据前缀名称(不用去前缀,该属性可以忽略不写)
				.setTablePrefix("sys_"));

		// 包配置
		mpg.setPackageInfo(new PackageConfig()
				// 基本包路径
				.setParent("com")
				// 设置Controller包名
				.setController("web")
				// 设置entity包名
				.setEntity("model.po")
				// 设置Mapper包名
				.setMapper("dao")
				// 设置Service包名
				.setService("service")
				// 设置Service实现类包名
				.setServiceImpl("service.impl")
				// 设置Mapper.xml包名
				.setXml("mapper"));

		// 注入自定义配置
		mpg.setCfg(new InjectionConfig() {
			@Override
			public void initMap() {
				Map<String, Object> map = new HashMap<>(1);
				map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
				this.setMap(map);
			}
		}.setFileOutConfigList(Collections.singletonList(new FileOutConfig("/templates/mapper.xml.vm") {
			// 自定义Mapper.xml输出路径
			@Override
			public String outputFile(TableInfo tableInfo) {
				return basePath + "/src/main/resources/com/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
			}
		})));
		// 执行代码自动生成
		mpg.execute();
	}
}

4.生成的service代码查看

package com.service;

import com.model.po.School;
import com.baomidou.mybatisplus.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 鵬程萬里
 * @since 2019-08-21
 */
public interface ISchoolService extends IService<School> {

}

SchoolService继承了ServiceImpl,在ServiceImpl中就已经注入了SchoolMapper,所以,我们就不需要再次注入,在ServiceImpl中也帮我们提供了常用的CRUD方法,我们可以直接使用。

@Controller
@RequestMapping("/school")
public class SchoolController {
    @Autowired
    private ISchoolService service;

    public String select(){
        service.selectList(null);
        return null;
    }
}

posted @ 2019-08-21 17:59  Roc-xb  阅读(0)  评论(0编辑  收藏  举报

易微帮源码


易微帮官网