赞
踩
今天整理下自己在整合springboot + mybatisPlus 中遇到的一些小挫折。
项目整体结构图:(请注意:我这里使用的MYSQL 版本为8)
项目整体依赖的pom 文件:
- <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.0</modelVersion>
- <parent>
- <groupId>com.zzg</groupId>
- <artifactId>springboot</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <artifactId>springboot-mybatisplus</artifactId>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <!--引入swagger -->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>2.2.2</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>2.2.2</version>
- </dependency>
- <!--集成mybatis -->
- <!-- 与数据库操作相关的依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- </dependency>
-
- <!-- 使用数据源 -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.1.6</version>
- </dependency>
-
- <!-- mysql -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.11</version>
- </dependency>
-
- <!-- mybatisplus集成 -->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatisplus-spring-boot-starter</artifactId>
- <version>1.0.5</version>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus</artifactId>
- <version>2.1.8</version>
- </dependency>
- <!-- mybatisplus 代码生成器 -->
- <!-- 模板引擎 -->
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity-engine-core</artifactId>
- <version>2.0</version>
- </dependency>
-
- <!-- 模板引擎,需要指定 mpg.setTemplateEngine(new FreemarkerTemplateEngine()); -->
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.23</version>
- </dependency>
- </dependencies>
-
- </project>
第一步:集成mybatisplus 核心框架pom.xml
- <!--集成mybatis -->
- <!-- 与数据库操作相关的依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- </dependency>
- <!-- mybatisplus集成 -->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatisplus-spring-boot-starter</artifactId>
- <version>1.0.5</version>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus</artifactId>
- <version>2.1.8</version>
- </dependency>
注意: mybatis-plus 自动的维护了mybatis以及mybatis-spring的依赖,在springboot中这三者不能同时的出现,避免版本的冲突,表示:跳进过这个坑。。。
第二步:集成mybatisplus 代码生成器
- <!-- mybatisplus 代码生成器 -->
- <!-- 模板引擎 -->
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity-engine-core</artifactId>
- <version>2.0</version>
- </dependency>
-
- <!-- 模板引擎,需要指定 mpg.setTemplateEngine(new FreemarkerTemplateEngine()); -->
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.23</version>
- </dependency>
编写mybatisplus 自动生成器MybatisPlusGenerator.java(基于单列模式进行创建)
package com.zzg.springboot.auto; 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.DbType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; public class MybatisPlusGenerator { private static MybatisPlusGenerator single = null; private MybatisPlusGenerator() { super(); } private static MybatisPlusGenerator getSingle() { if(single == null) { single =new MybatisPlusGenerator(); } return single; } public void autoGeneration() { GlobalConfig config = new GlobalConfig(); String dbUrl = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"; DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL) .setUrl(dbUrl) .setUsername("root") .setPassword("123456") .setDriverName("com.mysql.cj.jdbc.Driver"); StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig .setCapitalMode(true) .setEntityLombokModel(false) .setDbColumnUnderline(true) .setNaming(NamingStrategy.underline_to_camel); config.setActiveRecord(false) .setEnableCache(false) .setAuthor("zzg") //指定输出文件夹位置 .setOutputDir("E:\\workspace\\springboot\\springboot-mybatisplus\\src\\main\\java") .setFileOverride(true) .setServiceName("%sService"); new AutoGenerator().setGlobalConfig(config) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo( new PackageConfig() .setParent("com.zzg.springboot") .setController("controller") .setEntity("entity") ).execute(); } public static void main(String[] args) { // TODO Auto-generated method stub MybatisPlusGenerator generator = MybatisPlusGenerator.getSingle(); generator.autoGeneration(); } }
第三步:配置application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=60000 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.filters=stat,wall,log4j spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 mybatis-plus.mapper-locations=classpath:/mapper/*Mapper.xml mybatis-plus.typeAliasesPackage=com.zzg.springboot.entity
第四步:项目的配置信息
- package com.zzg.springboot.config;
-
- import javax.sql.DataSource;
-
- import org.mybatis.spring.annotation.MapperScan;
- import org.mybatis.spring.mapper.MapperScannerConfigurer;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-
- import com.alibaba.druid.pool.DruidDataSource;
- import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
- import com.baomidou.mybatisplus.plugins.PerformanceInterceptor;
-
- @Configuration
- //扫描dao或者是Mapper接口
- @MapperScan("com.zzg.springboot.mapper*")
- public class MybatisPlusConfig {
- /***
- * plus 的性能优化
- * @return
- */
- @Bean
- public PerformanceInterceptor performanceInterceptor() {
- PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
- /*<!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 -->*/
- performanceInterceptor.setMaxTime(1000);
- /*<!--SQL是否格式化 默认false-->*/
- performanceInterceptor.setFormat(true);
- return performanceInterceptor;
- }
-
- /**
- * @Description : mybatis-plus分页插件
- */
- @Bean
- public PaginationInterceptor paginationInterceptor() {
- return new PaginationInterceptor();
- }
-
- // 配置数据源
- @Bean(name="dataSource")
- @ConfigurationProperties(prefix="spring.datasource")
- public DataSource dataSource(){
- return new DruidDataSource();
- }
-
- // 配置事物管理器
- @Bean(name="transactionManager")
- public DataSourceTransactionManager transactionManager(){
- return new DataSourceTransactionManager(dataSource());
- }
- }
第五步:启动springbootApplication
- package com.zzg.springboot;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- @SpringBootApplication
- public class SpringBootMybatisPlus {
-
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- SpringApplication.run(SpringBootMybatisPlus.class, args);
- System.out.println("============= SpringBoot web Start Success =============");
- }
-
- }
项目关联的entity层、dao层、service层、controller层和*Mapper.xml文件
- package com.zzg.springboot.entity;
-
- import com.baomidou.mybatisplus.enums.IdType;
- import com.baomidou.mybatisplus.annotations.TableId;
- import java.io.Serializable;
-
- /**
- * <p>
- * 学员表
- * </p>
- *
- * @author zzg123
- * @since 2018-07-15
- */
- public class TStudent implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- @TableId(value = "sid", type = IdType.AUTO)
- private Integer sid;
- private String sname;
- private String sex;
-
-
- public Integer getSid() {
- return sid;
- }
-
- public void setSid(Integer sid) {
- this.sid = sid;
- }
-
- public String getSname() {
- return sname;
- }
-
- public void setSname(String sname) {
- this.sname = sname;
- }
-
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
-
- @Override
- public String toString() {
- return "TStudent{" +
- ", sid=" + sid +
- ", sname=" + sname +
- ", sex=" + sex +
- "}";
- }
- }
- package com.zzg.springboot.mapper;
-
- import java.util.Map;
-
- import com.baomidou.mybatisplus.mapper.BaseMapper;
- import com.zzg.springboot.entity.TStudent;
-
- /**
- * <p>
- * 学员表 Mapper 接口
- * </p>
- *
- * @author zzg123
- * @since 2018-07-15
- */
- public interface TStudentMapper extends BaseMapper<TStudent> {
- /**
- *
- * @Title: selectUserByMap
- * @Description: 多条件组合查找用户
- * @param userId
- * @return
- * @throws Exception
- */
- TStudent selectUserByMap(Map<String, Object> parameterMap) throws Exception;
- }
- package com.zzg.springboot.service;
-
- import java.util.Map;
-
- import com.baomidou.mybatisplus.service.IService;
- import com.zzg.springboot.entity.TStudent;
-
- /**
- * <p>
- * 学员表 服务类
- * </p>
- *
- * @author zzg123
- * @since 2018-07-15
- */
- public interface TStudentService extends IService<TStudent> {
- /**
- *
- * @Title: selectUserByMap
- * @Description: 多条件组合查找用户
- * @param userId
- * @return
- * @throws Exception
- */
- TStudent selectUserByMap(Map<String, Object> parameterMap) throws Exception;
- }
- package com.zzg.springboot.service.impl;
-
- import java.util.HashMap;
- import java.util.Map;
-
- import javax.annotation.Resource;
-
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- import com.baomidou.mybatisplus.service.impl.ServiceImpl;
- import com.zzg.springboot.entity.TStudent;
- import com.zzg.springboot.mapper.TStudentMapper;
- import com.zzg.springboot.service.TStudentService;
-
- /**
- * <p>
- * 学员表 服务实现类
- * </p>
- *
- * @author zzg123
- * @since 2018-07-15
- */
- @Service
- public class TStudentServiceImpl extends ServiceImpl<TStudentMapper, TStudent> implements TStudentService {
- /**
- * 用户数据访问接口
- */
- @Resource
- private TStudentMapper tstudentMapper;
- @Override
- public TStudent selectUserByMap(Map<String, Object> parameterMap) throws Exception {
- // TODO Auto-generated method stub
- return tstudentMapper.selectUserByMap(parameterMap);
- }
-
- }
- package com.zzg.springboot.controller;
-
-
- import java.util.HashMap;
- import java.util.Map;
-
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- import com.zzg.springboot.entity.TStudent;
- import com.zzg.springboot.service.TStudentService;
-
- /**
- * <p>
- * 学员表 前端控制器
- * </p>
- *
- * @author zzg123
- * @since 2018-07-15
- */
- @Controller
- @RequestMapping("/tStudent")
- public class TStudentController {
- @Resource
- private TStudentService service;
-
- @RequestMapping("/get")
- @ResponseBody
- public TStudent get(HttpServletRequest request, Model model) throws Exception {
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("sid", 1);
- TStudent student = this.service.selectUserByMap(map);
- return student;
- }
-
- }
建库脚本:
- CREATE TABLE `t_student` (
- `sid` INT(11) NOT NULL AUTO_INCREMENT,
- `sname` VARCHAR(255) NULL DEFAULT '0',
- `sex` CHAR(2) NULL DEFAULT '0',
- PRIMARY KEY (`sid`)
- )
- COMMENT='学员表'
- COLLATE='utf8mb4_0900_ai_ci'
- ENGINE=InnoDB
MyBatisPlus官网学习地址:
http://mp.baomidou.com/#/install
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。