Mybatis-Plus(简称MP)是一个米巴蒂斯的增强工具,这篇文章主要介绍了Mybatis-Plus搭建与使用入门(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Mybatis-Plus(简称MP)是一个米巴蒂斯的增强工具,在米巴蒂斯的基础上只做增强不做改变,为简化开发、提高效率而生。
中文文档:http://窦。奥斯中国。io/mybatis-plus-doc/#/
本文介绍包括
1)如何搭建
2)代码生成(控制器、服务、映射器、xml)
3)单表的污垢,条件查询、分页基类已经为你做好了
一、如何搭建
1.首先我们创建一个跳羚工程https://start.spring.io/
2.专家依赖
属国
groupIdcom.baomidou/groupId
artifactId mybatis-plus-boot-starter/artifactId
版本2.3/版本
/依赖关系
!-速度依赖,用于代码生成-
属国
groupIdorg.apache.velocity/groupId
人工速度-引擎-核心/artifactId
版本2.0/版本
/依赖关系
3.配置(因为感觉太啰嗦,这里省略了数据源的配置)
应用程序。属性
mybatis-plus。mapper-locations=类路径:/mapper/* mapper。可扩展标记语言
我的batis-plus。typealiasespackage=com。塔文。网络。春季bootmp。实体
我的batis-plus。全局配置。id-type=3
我的batis-plus。全局配置。现场-策略=2
mybatis-plus。全局配置。d b列下划线=真
mybatis-plus。全局配置。密钥生成器=com。窦米宝。mybatis plus。增量器。Oracle密钥生成器
mybatis-plus。全局配置。逻辑删除值=1
mybatis-plus。全局配置。逻辑不删除值=0
mybatis-plus。全局配置。SQL-injector=com。窦米宝。mybatis plus。制图师。logicsql注射器
#这里需要改成你的类
mybatis-plus。全局配置。元对象处理程序=com。塔文。网络。春季bootmp。mymetaobjecthandler
我的batis-plus。配置。map-underline-to-camel-case=true
mybatis-plus。配置。启用缓存=假
mybatis-plus。配置。JDBC类型为空=空
配置类MybatisPlusConfig
导入org。我的巴蒂斯。春天。注释。映射器扫描;
导入org。spring框架。语境。注释。豆;
导入org。spring框架。语境。注释。配置;
导入com。窦米宝。mybatisplus。增量器。H2密钥生成器;
导入com。窦米宝。mybatisplus。增量器。ikey生成器;
导入com。窦米宝。mybatisplus。制图师。isql注射器;
导入com。窦米宝。mybatisplus。制图师。logicsql注入器;
导入com。窦米宝。mybatisplus。制图师。metaobjecthandler
导入com。窦米宝。mybatisplus。插件。分页拦截器;
导入com。窦米宝。mybatisplus。插件。性能拦截器;
导入com。塔文。网络。春季bootmp。mymetaobjecthandler
@EnableTransactionManagement
@配置
@ mapper扫描(' com。塔文。网络。春季bootmp。映射器’)
公共类MybatisPlusConfig {
/**
* mybatis-plus SQL执行效率插件【生产环境可以关闭】
*/
@Bean
公共性能拦截器性能拦截器(){
返回新的性能拦截器();
}
/*
* 分页插件,自动识别数据库类型多租户,请参考官网【插件扩展】
*/
@Bean
公共分页侦听器分页侦听器(){
返回新的分页拦截器();
}
@Bean
公共MetaObjectHandler MetaObjectHandler(){
返回新的MyMetaObjectHandler();
}
/**
* 注入主键生成器
*/
@Bean
公共IKeyGenerator密钥生成器(){
返回新的H2密钥生成器();
}
/**
* 注入结构化查询语言注入器
*/
@Bean
公共ISqlInjector sqlInjector() {
返回新的logicsql注入器();
}
}
导入com。窦米宝。mybatisplus。制图师。metaobjecthandler
导入org。阿帕奇。伊巴提斯。反思。元对象;
导入org。slf4j。记录者;
导入org。SLF 4j。伐木工厂;
/**
* 注入公共字段自动填充,任选注入方式即可
*/
//@组件
公共类MyMetaObjectHandler扩展了MetaObjectHandler {
受保护的最终静态记录器记录器=记录器工厂。获取记录器(应用程序。类);
@覆盖
公共空插入填充(元对象元对象){
logger.info('新增的时候干点不可描述的事情');
}
@覆盖
公共void更新填充(元对象元对象){
logger.info('更新的时候干点不可描述的事情');
}
}
二、代码生成
执行朱尼特即可生成控制器、服务接口及实现、映射器及可扩展标记语言
导入org。朱尼特。测试;
导入com。窦米宝。mybatisplus。发电机。自动发电机;
导入com。窦米宝。mybatisplus。发电机。配置。数据源配置;
导入com。窦米宝。mybatisplus。发电机。配置。全局配置;
导入com。窦米宝。mybatisplus。发电机。配置。包配置;
导入com。窦米宝。mybatisplus。发电机。配置。策略配置;
导入com。窦米宝。mybatisplus。发电机。配置。规则。dbtype
导入com。窦米宝。mybatisplus。发电机。配置。规则。命名策略;
/**
* p
* 测试生成代码
* /p
*
* @作者K神
* @日期2017/12/18
*/
公共类GeneratorServiceEntity {
@测试
公共void生成代码(){
字符串包名称=' com。塔文。网络。spring bootmp ';
boolean serviceNameStartWithI=false;//用户-用户服务,设置成真实:用户- IUserService
生成bytables(serviceNameStartWithI,packageName,' cable ',' station ');//修改为你的表名
}
私有void生成bytables(boolean serviceNameStartWithI,String packageName,String.表名){
全局配置config=新的全局配置();
string dbUrl=' JDBC:MySQL://本地主机:3306/通信';
数据源配置数据源配置=新数据源配置();
数据源配置。设置DbType(DbType .MYSQL)。设置网址(数据库网址)。setUsername('root ')。setPassword('root ')。setDriverName(' com。MySQL。JDBC。司机’);
策略配置strategy config=新策略配置();
战略配置。setCapitalMode(true)。setEntityLombokModel(false)。setdbcolumnrunderline(true)。设置命名(命名策略。下划线_对_驼色)。设置包含(表名);//修改替换成你需要的表名,多个表名传数组
config.setActiveRecord(false)。setEnableCache(false)。setAuthor('殷天文)。setOutputDir(' E:\ \ dev \ \ stsdev \ \ spring-boot-MP \ \ src \ \ main \ \ Java ')。setfile覆盖(true);
如果(!serviceNameStartWithI) {
配置。设置服务名(" % s服务");
}
新的自动生成器()。setGlobalConfig(配置)。设置数据源(数据源配置)。设置策略(策略配置)。setPackageInfo(
新包配置()。setParent(包名)。setController(“控制器")。setEntity("实体")
).执行();
}
//私有void生成字节表(字符串包名,字符串.表名){
//generateByTables(true,packageName,tableNames);
//}
}
到这一步搭建已经基本完成了,下面就可以开始使用了!
三、使用 Mybatis-Plus
首先我们执行上面的生成代码()会为我们基于表结构生成以下代码(xml是我手动移到下面的),服务和制图人已经继承了基类,为我们封装了很多方法,下面看几个简单的例子。
/**
* p
* 前端控制器
* /p
*
* @作者殷天文
* @自2018-05-31
*/
@控制器
@RequestMapping('/cable ')
公共类CableController {
@ Autowired private CableService CableService;
/**
*列表查询测试
*
*/
@RequestMapping('/1 ')
@ResponseBody
公共对象test1() {
//构造实体对应的实体包装对象,进行过滤查询
EntityWrapperCable ew=新实体包装();
ew.where('type={0} ',1)。喜欢('名字','王)。和(' core_number={0} ',24)。and(' is _ delete=0 ');
列表电缆列表=电缆服务。选择列表(ew);
ListMapString,Object maps=有线服务。选择地图(ew);
系统。出去。println(列表);
System.out.println(地图);
返回"确定";
}
/**
* 分页查询测试
*/
@RequestMapping('/2 ')
@ResponseBody
公共对象test2() {
//构造实体对应的实体包装对象,进行过滤查询
EntityWrapperCable ew=新实体包装();
ew.where('type={0} ',1)
//.喜欢('名字','王)。和(' core_number={0} ',24)。and(' is _ delete=0 ');
PageCable page=new Page(1,10);
有线电视服务。选择页面(page,ew);
返回pageRst
}
/**
* 自定义查询字段
*/
@RequestMapping('/3 ')
@ResponseBody
公共对象test3() {
对象vl=空
//构造实体对应的实体包装对象,进行过滤查询
EntityWrapperCable ew=新实体包装();
ew.setSqlSelect('id,' name `,'
案例类型\n '
当一时,则为"220千伏" \n
结束类型名)。其中(' type={0} ',1)
//.喜欢('名字','王)。其中(假的,”电压水平=#{0} ",VL);//当vl为空时,不拼接
PageCable page=new Page(1,10);
有线电视服务。选择页面(page,ew);
返回pageRst
}
/**
*插入
*/
@RequestMapping('/4 ')
@ResponseBody
公共对象test4() {
电缆c=新电缆();
c.setName('测试光缆');
有线服务。插入(c);
返回"确定";
}
/**
*更新
*/
@RequestMapping('/5 ')
@ResponseBody
公共对象test5() {
电缆c=电缆服务。selectbyid(22284 l);
c.setName('测试光缆2222');
c。settype(1);
有线服务。更新byid(c);
返回"确定";
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。