,,Mybatis-Plus 搭建与使用入门(小结)

,,Mybatis-Plus 搭建与使用入门(小结)

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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: