Spring boot对于我来说是一个刚接触的新东西,学习过程中,发现这东西还是很容易上手的,Spring boot没配置时会默认使用Spring data jpa,这东西可以说一个极简洁的工具,可是我还是比较喜欢用mybatis,工具是没有最好的,只有这合适自己的。
说到mybatis,最近有一个很好用的工具--------mybatis-Plus(官网),现在更新的版本是2.1.2,这里使用的也是这个版本。我比较喜欢的功能是代码生成器,条件构造器,这样就可以更容易的去开发了。
mybatisPlus官网上是有Spring boot整个的例子的,我也跟着它走了一篇,结果,程序没跑起来,后来才知道demo用的H2 database,和mysql根本不是同一样东西,所以各位想要整合mybatisPlus,可以不看官网的,可以少走弯路。
下面就是整合的过程
1、首先要把需要的jar文件都弄过来,pom.xml需要的东西如下
pom.xml(不完整)
<!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatisplus-spring-boot-starter</artifactId> <version>1.0.4</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- mybatis-plus end -->
<!-- druid阿里巴巴数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.3</version> </dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
2、添加mybatis相关的配置,如账号、密码等。这里我使用了application.yml来配。
application.yml
server: port: 8080spring
spring:
devtools:
restart:
enabled: true #这里是为了热部署的,与mybatis是无关的DATABASE CONFIG
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
url: jdbc:mysql://mysqldb:3306/tdx_shop?useUnicode=true&characterEncoding=utf-8
type: com.alibaba.druid.pool.DruidDataSource #这里是配置druid连接池,以下都是druid的配置信息
filters: stat,wall,log4j
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select \'x\'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000mybatis
mybatis:
mapper-locations: classpath:/mapper/**Mapper.xml #把xml文件放在com.XX.mapper.中可能会出现找到的问题,这里把他放在resource下的mapper中实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.tdx.account_service.entity #这里是实体类的位置
configuration:
map-underscore-to-camel-case: true
cache-enabled: falselogging
logging:
level: warn
配置的东西和我们以前用mybatis配置可以说差不多,但spring boot是没有xml配置文件的。注意一下红字的内容,基本没问题了。
3、mybatis-Plus配置文件------MybatisPlusConfig,首先上图说明一下文件路径。其中MybatisPlusConfig是放在config文件夹内,而xml文件是放在resouces下mapper中。
接着就是MybatisPlusConfig内容部分了
1 | MybatisProperties.java |
package com.tdx.account_service.config;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.baomidou.mybatisplus.MybatisConfiguration;
import com.baomidou.mybatisplus.MybatisXMLLanguageDriver;
import com.baomidou.mybatisplus.entity.GlobalConfiguration;
import com.baomidou.mybatisplus.enums.DBType;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.plugins.PerformanceInterceptor;
import com.baomidou.mybatisplus.plugins.parser.ISqlParser;
import com.baomidou.mybatisplus.plugins.parser.ISqlParserFilter;
import com.baomidou.mybatisplus.plugins.parser.tenant.TenantHandler;
import com.baomidou.mybatisplus.plugins.parser.tenant.TenantSqlParser;
import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
import com.baomidou.mybatisplus.spring.boot.starter.SpringBootVFS;
import com.baomidou.mybatisplus.toolkit.PluginUtils;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.reflection.MetaObject;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;/**
code is far away from bug with the animal protecting
┏┓ ┏┓
┏┛┻━━━┛┻┓
┃ ┃
┃ ━ ┃
┃ ┳┛ ┗┳ ┃
┃ ┃
┃ ┻ ┃
┃ ┃
┗━┓ ┏━┛
┃ ┃神兽保佑
┃ ┃代码无BUG!
┃ ┗━━━┓
┃ ┣┓
┃ ┏┛
┗┓┓┏━┳┓┏┛
┃┫┫ ┃┫┫
┗┻┛ ┗┻┛
@Description : MybatisPlus配置
@Author : Liang.Guangqing
@Date : Create in 2017/9/19 13:54
*/
@Configuration
@EnableConfigurationProperties(MybatisProperties.class)
public class MybatisPlusConfig {@Autowired
private Environment environment;
private RelaxedPropertyResolver propertyResolver;
@Autowired
private DataSource dataSource;
@Autowired
private MybatisProperties properties;
@Autowired
private ResourceLoader resourceLoader = new DefaultResourceLoader();
@Autowired(required = false)
private Interceptor[] interceptors;
@Autowired(required = false)
private DatabaseIdProvider databaseIdProvider;/**
- @Description : mybatis-plus SQL执行效率插件【生产环境可以关闭】
- @Author : Liang.Guangqing
- @Date : Create in 2017/9/19 13:57
*/
@Bean
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}/**
配置DataSource
@return
@throws SQLException
*/
@Bean
public DataSource druidDataSource() throws SQLException {
this.propertyResolver = new RelaxedPropertyResolver(environment, "spring.datasource.");System.out.println("注入druid!");
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(propertyResolver.getProperty("url"));
datasource.setDriverClassName(propertyResolver.getProperty("driver-class-name"));
datasource.setUsername(propertyResolver.getProperty("username"));
datasource.setPassword(propertyResolver.getProperty("password"));
datasource.setInitialSize(Integer.valueOf(propertyResolver.getProperty("initial-size")));
datasource.setMinIdle(Integer.valueOf(propertyResolver.getProperty("min-idle")));
datasource.setMaxWait(Long.valueOf(propertyResolver.getProperty("max-wait")));
datasource.setMaxActive(Integer.valueOf(propertyResolver.getProperty("max-active")));
datasource.setMinEvictableIdleTimeMillis(Long.valueOf(propertyResolver.getProperty("min-evictable-idle-time-millis")));
try {
datasource.setFilters(propertyResolver.getProperty("filters"));
} catch (SQLException e) {
e.printStackTrace();
}
return datasource;
}/**
- @Description : mybatis-plus分页插件
- @Author : Liang.Guangqing
- @Date : Create in 2017/9/19 13:59
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor page = new PaginationInterceptor();
page.setDialectType("mysql");
return page;
}/**
- 这里全部使用mybatis-autoconfigure 已经自动加载的资源。不手动指定
- 配置文件和mybatis-boot的配置文件同步
- @return
*/
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {
MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
mybatisPlus.setDataSource(dataSource);
mybatisPlus.setVfs(SpringBootVFS.class);
if (StringUtils.hasText(this.properties.getConfigLocation())) {
mybatisPlus.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
}
mybatisPlus.setConfiguration(properties.getConfiguration());
if (!ObjectUtils.isEmpty(this.interceptors)) {
mybatisPlus.setPlugins(this.interceptors);
}
// MP 全局配置,更多内容进入类看注释
GlobalConfiguration globalConfig = new GlobalConfiguration();
globalConfig.setDbType(DBType.MYSQL.name());
// ID 策略 AUTO->0
("数据库ID自增") INPUT->1
(用户输入ID") ID_WORKER->2
("全局唯一ID") UUID->3
("全局唯一ID")
globalConfig.setIdType(2);
mybatisPlus.setGlobalConfig(globalConfig);
MybatisConfiguration mc = new MybatisConfiguration();
mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
mybatisPlus.setConfiguration(mc);
if (this.databaseIdProvider != null) {
mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider);
}
if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {
mybatisPlus.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
}
if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {
mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());
}
if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {
mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations());
}
return mybatisPlus;
}/**
- 注册一个StatViewServlet
- @return
/
@Bean
public ServletRegistrationBean DruidStatViewServle(){
//org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/");
//添加初始化参数:initParams
//白名单:
// servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
// servletRegistrationBean.addInitParameter("deny","192.168.1.73");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername","root");
servletRegistrationBean.addInitParameter("loginPassword","root");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}/**
- 注册一个:filterRegistrationBean
- @return
/
@Bean
public FilterRegistrationBean druidStatFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/");
//添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions",".js,.gif,.jpg,.png,.css,.ico,/druid/*");
return filterRegistrationBean;
}}
这里是完整的配置文件,需要注意的是引入的包,别引错了!
4、还要开启dao的扫描,很简单,就是在启动文件中添加@MapperScan("com.tdx.account_service.dao*"),如下是完整的
到这里,配置算是完成了,运行一下项目是可以运行起来的。
我觉得Mybatis-Plus最好玩得应该是代码生成器这部分内容,下面是代码生成器的使用过程
pom.xml上要加点东西
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency>
1、代码生成器的配置文件
MybatisPlusConfig.java
/** * Copyright (c) 2011-2016, hubin (jobob@qq.com). * <p> * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.tdx.account_service.generator;import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.baomidou.mybatisplus.enums.FieldFill;
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.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;/**
*code is far away from bug with the animal protecting
- ┏┓ ┏┓
*┏┛┻━━━┛┻┓
*┃ ┃
*┃ ━ ┃
*┃ ┳┛ ┗┳ ┃
*┃ ┃
*┃ ┻ ┃
*┃ ┃
*┗━┓ ┏━┛
* ┃ ┃神兽保佑
* ┃ ┃代码无BUG!
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*- @Description : MybatisPlus代码生成器
- @Author : Liang.Guangqing
- @Date : Create in 2017/9/19 14:48
*/
public class MysqlGenerator {</span><span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String packageName="account_service"; <span style="color: #008000">//</span><span style="color: #008000">文件路径</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String authorName="Liang.Guangqing"; <span style="color: #008000">//</span><span style="color: #008000">作者</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String table="sc_user"; <span style="color: #008000">//</span><span style="color: #008000">table名字</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String prefix="sc_"; <span style="color: #008000">//</span><span style="color: #008000">table前缀</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> File file = <span style="color: #0000ff">new</span><span style="color: #000000"> File(packageName); </span><span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String path =<span style="color: #000000"> file.getAbsolutePath(); </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) { </span><span style="color: #008000">//</span><span style="color: #008000"> 自定义需要填充的字段</span> List<TableFill> tableFillList = <span style="color: #0000ff">new</span> ArrayList<><span style="color: #000000">(); tableFillList.add(</span><span style="color: #0000ff">new</span> TableFill("ASDD_SS"<span style="color: #000000">, FieldFill.INSERT_UPDATE)); </span><span style="color: #008000">//</span><span style="color: #008000"> 代码生成器</span> AutoGenerator mpg = <span style="color: #0000ff">new</span><span style="color: #000000"> AutoGenerator().setGlobalConfig( </span><span style="color: #008000">//</span><span style="color: #008000"> 全局配置</span> <span style="color: #0000ff">new</span><span style="color: #000000"> GlobalConfig() .setOutputDir(path</span>+"/src/main/java")<span style="color: #008000">//</span><span style="color: #008000">输出目录</span> .setFileOverride(<span style="color: #0000ff">true</span>)<span style="color: #008000">//</span><span style="color: #008000"> 是否覆盖文件</span> .setActiveRecord(<span style="color: #0000ff">true</span>)<span style="color: #008000">//</span><span style="color: #008000"> 开启 activeRecord 模式</span> .setEnableCache(<span style="color: #0000ff">false</span>)<span style="color: #008000">//</span><span style="color: #008000"> XML 二级缓存</span> .setBaseResultMap(<span style="color: #0000ff">true</span>)<span style="color: #008000">//</span><span style="color: #008000"> XML ResultMap</span> .setBaseColumnList(<span style="color: #0000ff">true</span>)<span style="color: #008000">//</span><span style="color: #008000"> XML columList</span> .setOpen(<span style="color: #0000ff">false</span>)<span style="color: #008000">//</span><span style="color: #008000">生成后打开文件夹</span>
.setAuthor(authorName)
// 自定义文件命名,注意 %s 会自动填充表实体属性!
.setMapperName("%sMapper")
.setXmlName("%sMapper")
.setServiceName("%sService")
.setServiceImplName("%sServiceImpl")
.setControllerName("%sController")
).setDataSource(
// 数据源配置
new DataSourceConfig()
.setDbType(DbType.MYSQL)// 数据库类型
.setTypeConvert(new MySqlTypeConvert() {
// 自定义数据库表字段类型转换【可选】
@Override
public DbColumnType processTypeConvert(String fieldType) {
System.out.println("转换类型:" + fieldType);
// if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
// return DbColumnType.BOOLEAN;
// }
return super.processTypeConvert(fieldType);
}
})
.setDriverName("com.mysql.jdbc.Driver")
.setUsername("root")
.setPassword("root")
.setUrl("jdbc:mysql://127.0.0.1:3306/tdx_shop?characterEncoding=utf8")
).setStrategy(
// 策略配置
new StrategyConfig()
// .setCapitalMode(true)// 全局大写命名
//.setDbColumnUnderline(true)//全局下划线命名
.setTablePrefix(new String[]{prefix})// 此处可以修改为您的表前缀
.setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
.setInclude(new String[] { table }) // 需要生成的表
.setRestControllerStyle(true)
//.setExclude(new String[]{"test"}) // 排除生成的表
// 自定义实体父类
// .setSuperEntityClass("com.baomidou.demo.TestEntity")
// 自定义实体,公共字段
//.setSuperEntityColumns(new String[]{"test_id"})
.setTableFillList(tableFillList)
// 自定义 mapper 父类
// .setSuperMapperClass("com.baomidou.demo.TestMapper")
// 自定义 service 父类
// .setSuperServiceClass("com.baomidou.demo.TestService")
// 自定义 service 实现类父类
// .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl")
// 自定义 controller 父类
.setSuperControllerClass("com.tdx."+packageName+".controller.AbstractController")
// 【实体】是否生成字段常量(默认 false)
// public static final String ID = "test_id";
// .setEntityColumnConstant(true)
// 【实体】是否为构建者模型(默认 false)
// public User setName(String name) {this.name = name; return this;}
// .setEntityBuilderModel(true)
// 【实体】是否为lombok模型(默认 false)<a href="https://projectlombok.org/">document</a>
// .setEntityLombokModel(true)
// Boolean类型字段是否移除is前缀处理
// .setEntityBooleanColumnRemoveIsPrefix(true)
// .setRestControllerStyle(true)
// .setControllerMappingHyphenStyle(true)
).setPackageInfo(
// 包配置
new PackageConfig()
//.setModuleName("User")
.setParent("com.tdx."+packageName)// 自定义包路径
.setController("controller")// 这里是控制器包名,默认 web
.setEntity("entity")
.setMapper("dao")
.setService("service")
.setServiceImpl("service.impl")
//.setXml("mapper")
).setCfg(
// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
}
}.setFileOutConfigList(Collections.<FileOutConfig>singletonList(new FileOutConfig("/templates/mapper.xml.vm") {
// 自定义输出文件目录
@Override
public String outputFile(TableInfo tableInfo) {
return path+"/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
}
}))
).setTemplate(
// 关闭默认 xml 生成,调整生成 至 根目录
new TemplateConfig().setXml(null)
// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
// .setController("...");
// .setEntity("...");
// .setMapper("...");
// .setXml("...");
// .setService("...");
// .setServiceImpl("...");
);</span><span style="color: #008000">//</span><span style="color: #008000"> 执行生成</span>
mpg.execute();
</span><span style="color: #008000">//</span><span style="color: #008000"> 打印注入设置,这里演示模板里面怎么获取注入内容【可无】</span> System.err.println(mpg.getCfg().getMap().get("abc"<span style="color: #000000">)); }
}
文件中修改的内容还是很多的,最主要的还是mysql的连接信息,没理由你账号,密码都错了还能连得上吧,其次设置一下你生成的模板文件路径,我这里生成的路径在上面图可以看得到,是在com.tdx.account_service下的,注意,xml文件要放在resources下,不然是识别的,说找不到这个方法
按照官网的代码模板生成的文件基本是白白的,主要是mybatis-Plus集成了公共方法,很多常用的工具都可以引用了。在这里我提供一下我修改后Controller.java.vm文件,主要还是按照我自己的习惯去弄的
controller.java.vm
package ${package.Controller};import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;if(${restControllerStyle})
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;else
import org.springframework.stereotype.Controller;
end
if(${superControllerClassPackage})
import ${superControllerClassPackage};
end
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import ${package.Service}.${table.serviceName};
import ${package.Entity}.common.DatatablesJSON;
import ${package.Entity}.common.JSONResult;
import ${package.Entity}.${entity};
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/**
*code is far away from bug with the animal protecting
- ┏┓ ┏┓
*┏┛┻━━━┛┻┓
*┃ ┃
*┃ ━ ┃
*┃ ┳┛ ┗┳ ┃
*┃ ┃
*┃ ┻ ┃
*┃ ┃
*┗━┓ ┏━┛
* ┃ ┃神兽保佑
* ┃ ┃代码无BUG!
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*- @description : ${entity} 控制器
</span><span style="color: #808080">@author</span><span style="color: #008000"> ${author}
- @since ${date}
*/if(${restControllerStyle})
@RestController
else
@Controller
end
@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")
if(${superControllerClass})
public class ${table.controllerName} extends ${superControllerClass} {
else
public class ${table.controllerName} {
end
</span><span style="color: #0000ff">private</span> <span style="color: #0000ff">final</span> Logger logger = LoggerFactory.getLogger(${table.controllerName}.<span style="color: #0000ff">class</span><span style="color: #000000">); @Autowired </span><span style="color: #0000ff">public</span><span style="color: #000000"> ${table.serviceName} ${table.entityPath}Service; </span><span style="color: #008000">/**</span><span style="color: #008000"> * @description : 获取分页列表 * --------------------------------- * </span><span style="color: #808080">@author</span><span style="color: #008000"> : ${author} * </span><span style="color: #808080">@since</span><span style="color: #008000"> : Create in ${date} </span><span style="color: #008000">*/</span><span style="color: #000000"> @RequestMapping(value </span>= "/get${entity}List",method =<span style="color: #000000"> RequestMethod.POST) </span><span style="color: #0000ff">public</span> Object get${entity}List(${entity} param , @RequestParam(value = "draw",defaultValue = "0"<span style="color: #000000">) Integer draw, @RequestParam(value </span>= "length"<span style="color: #000000">) Integer length, @RequestParam(value </span>= "start"<span style="color: #000000">) Integer start) { DatatablesJSON</span><${entity}> resJson=<span style="color: #0000ff">new</span> DatatablesJSON<><span style="color: #000000">(); </span><span style="color: #0000ff">try</span><span style="color: #000000"> { Integer pageNo</span>=<span style="color: #000000">getPageNo(start,length); Page</span><${entity}> page=<span style="color: #0000ff">new</span> Page<${entity}><span style="color: #000000">(pageNo,length); ${table.entityPath}Service.selectPage(page,</span><span style="color: #0000ff">new</span> EntityWrapper<${entity}><span style="color: #000000">(param)); resJson.setDraw(draw</span>++<span style="color: #000000">); resJson.setRecordsTotal(page.getTotal()); resJson.setRecordsFiltered(page.getTotal()); resJson.setData(page.getRecords()); resJson.setSuccess(</span><span style="color: #0000ff">true</span><span style="color: #000000">); }</span><span style="color: #0000ff">catch</span><span style="color: #000000"> (Exception e){ resJson.setSuccess(</span><span style="color: #0000ff">false</span><span style="color: #000000">); resJson.setError(</span>"异常信息:{"+e.getClass().getName()+"}"<span style="color: #000000">); logger.info(</span>"异常信息:{}"+<span style="color: #000000">e.getMessage()); } </span><span style="color: #0000ff">return</span><span style="color: #000000"> resJson; } </span><span style="color: #008000">/**</span><span style="color: #008000"> * @description : 通过id获取${entity} * --------------------------------- * </span><span style="color: #808080">@author</span><span style="color: #008000"> : ${author} * </span><span style="color: #808080">@since</span><span style="color: #008000"> : Create in ${date} </span><span style="color: #008000">*/</span><span style="color: #000000"> @RequestMapping(value </span>= "/get${entity}ById",method =<span style="color: #000000"> RequestMethod.GET) </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object get${entity}ById(String id) { JSONResult</span><${entity}> resJson = <span style="color: #0000ff">new</span> JSONResult<><span style="color: #000000">(); </span><span style="color: #0000ff">try</span><span style="color: #000000"> { ${entity} param</span>=<span style="color: #000000"> ${table.entityPath}Service.selectById(id); resJson.setData(param); resJson.setSuccess(</span><span style="color: #0000ff">true</span><span style="color: #000000">); }</span><span style="color: #0000ff">catch</span><span style="color: #000000"> (Exception e) { resJson.setSuccess(</span><span style="color: #0000ff">false</span><span style="color: #000000">); resJson.setMe
以上是关于spring boot整合mybatis+mybatis-plus的主要内容,如果未能解决你的问题,请参考以下文章
上手spring boot项目之spring boot整合mybatis进行增删改查的三种方式。
springboot整合mybatis使用xml实现sql语句的配置,在insert之后返回自增id