springboot2.0+mybatis-puls3.0

官方文档:

https://mp.baomidou.com/

项目依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0modelVersion>
	<groupId>springboot-mybatispulsgroupId>
	<artifactId>springboot-mybatispulsartifactId>
	<version>0.0.1-SNAPSHOTversion>
	<parent>
		<groupId>org.springframework.bootgroupId>
		<artifactId>spring-boot-starter-parentartifactId>
		<version>2.0.3.RELEASEversion>
	parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
		dependency>

		
		<dependency>
			<groupId>org.mybatis.spring.bootgroupId>
			<artifactId>mybatis-spring-boot-starterartifactId>
			<version>2.0.1version>
		dependency>

		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-testartifactId>
			<scope>testscope>
		dependency>

		
		<dependency>
			<groupId>com.baomidougroupId>
			<artifactId>mybatis-plus-boot-starterartifactId>
			<version>3.1.2version>
		dependency>
		
		<dependency>
			<groupId>org.projectlombokgroupId>
			<artifactId>lombokartifactId>
			<optional>trueoptional>
		dependency>

		
		<dependency>
			<groupId>com.baomidougroupId>
			<artifactId>mybatis-plus-generatorartifactId>
			<version>3.1.2version>
		dependency>

		
		<dependency>
			<groupId>org.freemarkergroupId>
			<artifactId>freemarkerartifactId>
		dependency>

		
		<dependency>
			<groupId>mysqlgroupId>
			<artifactId>mysql-connector-javaartifactId>
		dependency>

		
		<dependency>
			<groupId>com.alibabagroupId>
			<artifactId>fastjsonartifactId>
			<version>1.2.59version>
		dependency>


	dependencies>

	<properties>
		<java.version>1.8java.version>
	properties>


	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.bootgroupId>
				<artifactId>spring-boot-maven-pluginartifactId>
			plugin>
		plugins>
	build>
project>
测试数据库:
##宠物表
DROP TABLE IF EXISTS `pet`;
CREATE TABLE `pet` (
  `p_id` int(11) NOT NULL AUTO_INCREMENT,
  `p_age` int(11) DEFAULT NULL,
  `p_name` varchar(255) DEFAULT NULL,
  `p_birthday` datetime DEFAULT NULL,
  `p_death_time` datetime DEFAULT NULL,
  `p_remark` varchar(255) DEFAULT NULL,
  `u_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

##用户表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  `sex` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
开始开发:

1:创建springboot项目,添加启动类,配置文件

package com.lcf.puls;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author : lichenfei
 * @date : 2019年8月9日
 * @time : 下午5:36:15
 *
 */
@SpringBootApplication
@MapperScan("com.lcf.puls.mapper")
public class MybatisPulsApplication {

    public static void main(String[] args) throws Exception {
	SpringApplication.run(MybatisPulsApplication.class, args);
    }

}

application.properties

#springboot 配置信息
#lichenfei
#端口号
server.port=8888
#数据库连接相关
spring.datasource.url=jdbc\:mysql\://127.0.0.1\:3306/mybatis_puls?allowMultiQueries\=true&useUnicode\=yes&characterEncoding\=UTF-8&useSSL\=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#控制台打印sql
logging.level.com.lcf.puls.mapper=debug

2:添加mybatis-puls代码生成工具

package com.lcf.puls.generator;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

/**
 * @author : lichenfei
 * @date : 2019年8月14日
 * @time : 下午2:31:12
 *
 */
public class MysqlGenerator {

    private static final String DATASOURCE_URL = "jdbc:mysql://localhost:3306/mybatis_puls?useUnicode=true&useSSL=false&characterEncoding=utf8";

    private static final String DATASOURCE_USERNAME = "root";

    private static final String DATASOURCE_PASSWORD = "123456";

    private static final String DATASOURCE_DRIVER = "com.mysql.jdbc.Driver";

    /**
     * 每次生成文件时设置当前开发人员
     */
    private static final String AUTHOR = "lichenfei";// 开发人员

    private static final String MODULE_NAME = "puls";// 模块名

    private static final String PACKAGE_PATH = "com.lcf";// 项目包路径 最终生成路径为:PACKAGE_PATH + MODULE_NAME

    /**
     * 

* 读取控制台内容 *

*/
public static String scanner(String tip) { Scanner scanner = new Scanner(System.in); StringBuilder help = new StringBuilder(); help.append("请输入" + tip + ":"); System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); if (StringUtils.isNotEmpty(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置----------------------------------------------------- GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java");// 生成文件的输出目录,默认值:D 盘根目录 gc.setAuthor(AUTHOR);// 开发人员 gc.setOpen(false);// 是否打开输出目录 默认值:true // gc.setSwagger2(true); 实体属性 Swagger2 注解 开启 swagger2 模式 gc.setFileOverride(false);// 是否覆盖同名文件,默认是false // gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false 开启 ActiveRecord 模式 gc.setEnableCache(false);// XML 二级缓存 是否在xml中添加二级缓存配置 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(false);// XML columList mpg.setGlobalConfig(gc); // 数据源配置----------------------------------------------------- DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl(DATASOURCE_URL); dsc.setDriverName(DATASOURCE_DRIVER); dsc.setUsername(DATASOURCE_USERNAME); dsc.setPassword(DATASOURCE_PASSWORD); mpg.setDataSource(dsc); // 包配置----------------------------------------------------- PackageConfig pc = new PackageConfig(); pc.setModuleName(MODULE_NAME);// 模块名 pc.setParent(PACKAGE_PATH);// 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名 // pc.setEntity(entity)//Entity包名 // pc.setService(service)//Service包名 // pc.setServiceImpl(serviceImpl);//Service Impl包名 // pc.setMapper(mapper)//Mapper包名 // pc.setXml("src/main/resources/mapper/puls/lcf");// Mapper XML包名 // pc.setController(controller)//Controller 包名 // pc.setPathInfo(pathInfo);//路径配置信息 mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; // 如果模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 如果模板引擎是 velocity // String templatePath = "/templates/mapper.xml.vm"; // 自定义输出配置 List<FileOutConfig> focList = new ArrayList<>(); // 自定义配置会被优先输出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(TableInfo tableInfo) { // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); /* * cfg.setFileCreate(new IFileCreate() { * * @Override public boolean isCreate(ConfigBuilder configBuilder, FileType * fileType, String filePath) { // 判断自定义文件夹是否需要创建 checkDir("调用默认方法创建的目录"); * return false; } }); */ cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 配置模板----------------------------------------------------- TemplateConfig templateConfig = new TemplateConfig(); // 配置自定义输出模板 // 指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 // templateConfig.setEntity("templates/entity2.java"); // templateConfig.setService(); // templateConfig.setController(); // templateConfig.setMapper(mapper); templateConfig.setXml(null); mpg.setTemplate(templateConfig); // 策略配置------------------------------------------------------ StrategyConfig strategy = new StrategyConfig(); strategy.setCapitalMode(true);// 是否大写命名 strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行 // strategy.setTablePrefix(tablePrefix)//表前缀 // strategy.setFieldPrefix(fieldPrefixs)//字段前缀 // strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");//自定义继承的Entity类全称,带包名 // strategy.setSuperEntityColumns(superEntityColumns);//自定义基础的Entity类,公共字段 // strategy.setSuperMapperClass(superMapperClass)//自定义继承的Mapper类全称,带包名(mybatispuls已经默认设置了,无需设置) // strategy.setSuperServiceClass(superServiceClass)//自定义继承的Service类全称,带包名 // strategy.setSuperServiceImplClass(superServiceImplClass)//自定义继承的ServiceImpl类全称,带包名 // strategy.setSuperControllerClass(superControllerClass)//自定义继承的Controller类全称,带包名 strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); strategy.setEntityColumnConstant(false);// 【实体】是否生成字段常量(默认 false) strategy.setEntityBuilderModel(false);// 【实体】是否为构建者模型(默认 false) // 不使用会自动生成set,get,toString方法 // strategy.setEntityLombokModel(true);// 【实体】是否为lombok模型 默认 false // strategy.setRestControllerStyle(true);// 生成 @RestController 控制器 // strategy.setControllerMappingHyphenStyle(controllerMappingHyphenStyle)//驼峰转连字符 strategy.setEntityTableFieldAnnotationEnable(true);// 是否生成实体时,生成字段注解 // strategy.setControllerMappingHyphenStyle(true); // strategy.setTablePrefix(pc.getModuleName() + "_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine());// freemarker模板配置 mpg.execute(); } }

3:运行MysqlGenerator代码生成工具类,生成代码,如图所示:
1>运行之前:
springboot2.0+mybatis-puls3.0_第1张图片
2>开始运行(输入表名并点击回车):
springboot2.0+mybatis-puls3.0_第2张图片
3>代码生成之后:
springboot2.0+mybatis-puls3.0_第3张图片
4:编写测试类进行测试:

package com.lcf.puls.test;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lcf.puls.entity.User;
import com.lcf.puls.mapper.UserMapper;
import com.lcf.puls.service.IUserService;

import javafx.print.JobSettings;

/**
 * @author : lichenfei
 * @date : 2019年8月9日
 * @time : 下午5:40:24
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class PulsTest1 {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private IUserService iUserService;

    @Test
    public void testSelect() {
	//增:
	User user =  new User();
	user.setAge(24);
	user.setName("lichenfei");
	user.setEmail("[email protected]");
	user.setSex("m");
	//int insert = userMapper.insert(user);//保存一个实体
	//System.err.println("insert:"+insert +"---user.id:"+user.getId());//主键会自动保存到实体中
	
	boolean save = iUserService.save(user);
	System.err.println("save:"+save +"---user.id:"+user.getId());//主键会自动保存到实体中
		
	//删:
	//int delete = userMapper.deleteById(4);//根据主键删除
	//System.err.println("delete:"+delete);
	
	
	//改:
	iUserService.updateById(entity);//根据id修改
	
	
	//查:
	System.out.println(("----- userMapper ------"));
	List<User> userList = userMapper.selectList(null);
	System.err.println(userList.toString());

	System.out.println(("----- iUserService ------"));
	List<User> list = iUserService.list();
	System.err.println(list.toString());

	// UpdateWrapper
	QueryWrapper<User> queryWrapper = new QueryWrapper<>();
	queryWrapper.eq("age", 18);
	queryWrapper.select("name", "age", "sex");// 设置查询字段
	List<User> selectList = userMapper.selectList(queryWrapper);
	System.err.println(selectList.toString());

	//分页查询需首先配置分页config
	Page<User> page = new Page<>(1, 3);
	IPage<User> selectPage = userMapper.selectPage(page, null);
	System.err.println(JSON.toJSONString(selectPage));

    }

}

分页配置:

package com.lcf.puls.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

/**
 * @author : lichenfei
 * @date : 2019年8月16日
 * @time : 上午11:15:52
 *
 */
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
	PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
	// paginationInterceptor.setLimit(你的最大单页限制数量,默认 500 条,小于 0 如 -1 不受限制);
	return paginationInterceptor;
    }
}

基本整合到这里就完了,有什么问题欢迎在下方留言…

你可能感兴趣的:(springboot)