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

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

中文文档 :http://baomidou.oschina.io/mybatis-plus-doc/#/

本文介绍包括

1)如何搭建
2)代码生成(controller、service、mapper、xml)
3)单表的CRUD、条件查询、分页 基类已经为你做好了

一、如何搭建

1. 首先我们创建一个 springboot 工程 --> https://start.spring.io/

2. maven 依赖

  <dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>2.3</version>
  </dependency>
  <!-- velocity 依赖,用于代码生成 -->
  <dependency>
   <groupId>org.apache.velocity</groupId>
   <artifactId>velocity-engine-core</artifactId>
   <version>2.0</version>
  </dependency>

3. 配置(因为感觉太啰嗦,这里省略了数据源的配置)

application.properties

mybatis-plus.mapper-locations=classpath:/mapper/*Mapper.xml
mybatis-plus.typeAliasesPackage=com.taven.web.springbootmp.entity
mybatis-plus.global-config.id-type=3
mybatis-plus.global-config.field-strategy=2
mybatis-plus.global-config.db-column-underline=true
mybatis-plus.global-config.key-generator=com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
mybatis-plus.global-config.logic-delete-value=1
mybatis-plus.global-config.logic-not-delete-value=0
mybatis-plus.global-config.sql-injector=com.baomidou.mybatisplus.mapper.LogicSqlInjector
#这里需要改成你的类
mybatis-plus.global-config.meta-object-handler=com.taven.web.springbootmp.MyMetaObjectHandler
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.cache-enabled=false
mybatis-plus.configuration.jdbc-type-for-null=null

配置类 MybatisPlusConfig

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.baomidou.mybatisplus.incrementer.H2KeyGenerator;
import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
import com.baomidou.mybatisplus.mapper.ISqlInjector;
import com.baomidou.mybatisplus.mapper.LogicSqlInjector;
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.plugins.PerformanceInterceptor;
import com.taven.web.springbootmp.MyMetaObjectHandler;

@EnableTransactionManagement
@Configuration
@MapperScan("com.taven.web.springbootmp.mapper")
public class MybatisPlusConfig {
 /**
  * mybatis-plus SQL执行效率插件【生产环境可以关闭】
  */
 @Bean
 public PerformanceInterceptor performanceInterceptor() {
  return new PerformanceInterceptor();
 }

 /*
  * 分页插件,自动识别数据库类型 多租户,请参考官网【插件扩展】
  */
 @Bean
 public PaginationInterceptor paginationInterceptor() {
  return new PaginationInterceptor();
 }

 @Bean
 public MetaObjectHandler metaObjectHandler() {
  return new MyMetaObjectHandler();
 }

 /**
  * 注入主键生成器
  */
 @Bean
 public IKeyGenerator keyGenerator() {
  return new H2KeyGenerator();
 }

 /**
  * 注入sql注入器
  */
 @Bean
 public ISqlInjector sqlInjector() {
  return new LogicSqlInjector();
 }

}
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 注入公共字段自动填充,任选注入方式即可
 */
//@Component
public class MyMetaObjectHandler extends MetaObjectHandler {

 protected final static Logger logger = LoggerFactory.getLogger(Application.class);

 @Override
 public void insertFill(MetaObject metaObject) {
  logger.info("新增的时候干点不可描述的事情");
 }

 @Override
 public void updateFill(MetaObject metaObject) {
  logger.info("更新的时候干点不可描述的事情");
 }
}

二、代码生成

执行 junit 即可生成controller、service接口及实现、mapper及xml

import org.junit.Test;

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;

/**
 * <p>
 * 测试生成代码
 * </p>
 *
 * @author K神
 * @date 2017/12/18
 */
public class GeneratorServiceEntity {

 @Test
 public void generateCode() {
  String packageName = "com.taven.web.springbootmp";
  boolean serviceNameStartWithI = false;//user -> UserService, 设置成true: user -> IUserService
  generateByTables(serviceNameStartWithI, packageName, "cable", "station");//修改为你的表名
 }

 private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
  GlobalConfig config = new GlobalConfig();
  String dbUrl = "jdbc:mysql://localhost:3306/communicate";
  DataSourceConfig dataSourceConfig = new DataSourceConfig();
  dataSourceConfig.setDbType(DbType.MYSQL)
    .setUrl(dbUrl)
    .setUsername("root")
    .setPassword("root")
    .setDriverName("com.mysql.jdbc.Driver");
  StrategyConfig strategyConfig = new StrategyConfig();
  strategyConfig
    .setCapitalMode(true)
    .setEntityLombokModel(false)
    .setDbColumnUnderline(true)
    .setNaming(NamingStrategy.underline_to_camel)
    .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
  config.setActiveRecord(false)
    .setEnableCache(false)
    .setAuthor("殷天文")
    .setOutputDir("E:\\dev\\stsdev\\spring-boot-mp\\src\\main\\java")
    .setFileOverride(true);
  if (!serviceNameStartWithI) {
   config.setServiceName("%sService");
  }
  new AutoGenerator().setGlobalConfig(config)
    .setDataSource(dataSourceConfig)
    .setStrategy(strategyConfig)
    .setPackageInfo(
      new PackageConfig()
        .setParent(packageName)
        .setController("controller")
        .setEntity("entity")
    ).execute();
 }

// private void generateByTables(String packageName, String... tableNames) {
//  generateByTables(true, packageName, tableNames);
// }
}

到这一步搭建已经基本完成了,下面就可以开始使用了!

三、使用 Mybatis-Plus

首先我们执行 上面的 generateCode() 会为我们基于 表结构 生成以下代码(xml是我手动移到下面的),service 和 mapper 已经继承了基类,为我们封装了很多方法,下面看几个简单的例子。

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author 殷天文
 * @since 2018-05-31
 */
@Controller
@RequestMapping("/cable")
public class CableController {

 @Autowired private CableService cableService;

 /**
  * list 查询测试
  *
  */
 @RequestMapping("/1")
 @ResponseBody
 public Object test1() {
  // 构造实体对应的 EntityWrapper 对象,进行过滤查询
  EntityWrapper<Cable> ew = new EntityWrapper<>();
  ew.where("type={0}", 1)
    .like("name", "王")
    .and("core_number={0}", 24)
    .and("is_delete=0");
  List<Cable> list = cableService.selectList(ew);
  List<Map<String, Object>> maps = cableService.selectMaps(ew);
  System.out.println(list);
  System.out.println(maps);
  return "ok";
 }

 /**
  * 分页 查询测试
  */
 @RequestMapping("/2")
 @ResponseBody
 public Object test2() {
  // 构造实体对应的 EntityWrapper 对象,进行过滤查询
  EntityWrapper<Cable> ew = new EntityWrapper<>();
  ew.where("type={0}", 1)
//    .like("name", "王")
    .and("core_number={0}", 24)
    .and("is_delete=0");
  Page<Cable> page = new Page<>(1,10);
  Page<Cable> pageRst = cableService.selectPage(page, ew);
  return pageRst;
 }

 /**
  * 自定义查询字段
  */
 @RequestMapping("/3")
 @ResponseBody
 public Object test3() {
  Object vl = null;
  // 构造实体对应的 EntityWrapper 对象,进行过滤查询
  EntityWrapper<Cable> ew = new EntityWrapper<>();
  ew.setSqlSelect("id, `name`, "
    + "case type\n" +
    "when 1 then '220kv'\n" +
    "end typeName")
    .where("type={0}", 1)
//    .like("name", "王")
    .where(false, "voltage_level=#{0}", vl);//当vl 为空时,不拼接
  Page<Cable> page = new Page<>(1,10);
  Page<Cable> pageRst = cableService.selectPage(page, ew);
  return pageRst;
 }

 /**
  * insert
  */
 @RequestMapping("/4")
 @ResponseBody
 public Object test4() {
  Cable c = new Cable();
  c.setName("测试光缆");
  cableService.insert(c);
  return "ok";
 }

 /**
  * update
  */
 @RequestMapping("/5")
 @ResponseBody
 public Object test5() {
  Cable c = cableService.selectById(22284l);
  c.setName("测试光缆2222");
  c.setType(1);
  cableService.updateById(c);
  return "ok";
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Spring boot上配置与使用mybatis plus

    http://mp.baomidou.com/#/?id=%e7%ae%80%e4%bb%8b这个是mybatisplus的官方文档,上面是mybtisplus的配置使用方法,以及一些功能的介绍 下面开始配置 maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <

  • mybatis plus代码生成器配置过程解析

    这篇文章主要介绍了mybatis plus代码生成器配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近在玩项目,发现自己写严重浪费时间~于是想到了代码生成器,之前用过一次的mybatis-plus,再重新实现了一下 确保修改好对应的配置即可 依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boo

  • 基于Mybatis plus 自动代码生成器的实现代码

    1.使用的是maven项目,添加依赖 <!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.2.0</version> </dependency> 还有数据库的连接 <dependency> <

  • 结合mybatis-plus实现简单不需要写sql的多表查询

    项目地址: GITHUB (本地下载) java mybatis 多表查询 简介 实现简单的实体类操作多表,  首先你的项目是使用了mybatis-plus 才可以使用 设计说明 如何关联表? 找第一张表注解为 TableId (mybatis-plus 注解)的属性名, 到每二张表找同样的属性名, 如果没找到,反过来找,如果还没找到,挨个属性找.以此类推,实现关联的前提条件是 主从表的关联例名必须一样 // user 表 @TableId private Integer userId // a

  • MyBatisPlus 自定义sql语句的实现

    一.引言 Good Good Study,Day Day Up MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧. 二.配置 自定义的sql当然是写在XML文件中的啦,那么首先来定义xml文件的位置,在yml配置文件如下 mybatis-plus: # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml # 如果是放在resource目录 classpath:

  • SpringBoot整合MyBatis-Plus3.1教程详解

    一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间.代码生成,分页,性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了. 二.项目环境 MyBatis-Plus版本: 3.1.0 SpringBoot版本:2.1.5 JDK

  • Mybatis-Plus 多表联查分页的实现代码

    上一节,简单讲述了 Mybatis-Plus 搭建与使用入门,这一节,简单讲一下如何使用 MP 实现多表分页. 分析 使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的demo,其实多表分页实现原理相同,都是通过 mybatis 的拦截器 (拦截器做了什么?他会在你的 sql 执行之前,为你做一些事情,例如分页,我们使用了 MP 不用关心 limit,拦截器为我们拼接.我们也不用关心总条数,拦截器获取到我们 sql 后,拼接 select count(*) 为我们查询总条

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

    Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 中文文档 :http://baomidou.oschina.io/mybatis-plus-doc/#/ 本文介绍包括 1)如何搭建 2)代码生成(controller.service.mapper.xml) 3)单表的CRUD.条件查询.分页 基类已经为你做好了 一.如何搭建 1. 首先我们创建一个 springboot 工程 --> https:/

  • Mybatis 入门之MyBatis环境搭建(第一篇)

    Mybatis简介 MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis. MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects

  • MyBaits 入门之MyBatis环境搭建(第一篇)

    MyBatis 简介 MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis. MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Object

  • vmware vSAN入门小结

    一.背景简介 1.简单介绍vsphere的共享存储背景 vSphere里面有个重要的功能就是进行虚拟机封装,一个虚拟机以文件的形式存在,可以任意拷贝,比如.vmx虚拟机配置文件,vmdk数据文件等 vSphere下还有个集群的概念,一个集群视为一个资源池,搭配很多vSphere的高级特性,业务可以在集群中任意主机上,不必担心单主机故障 如下图所示,vSphere的故障恢复机制 HA,可以将故障主机上的虚拟机迁移到其他主机运行. 但是这个特性有个前提是共享存储,一个存储可以被多个服务器同时连接,同

  • mybatis 中 foreach collection的用法小结(三种)

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. item表示集合中每一个元素进行迭代时的别名,     index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,     open表示该语句以什么开始,     separator表示在每次进行迭代之间以什么符号作为分隔 符,     close表示以什么结束. 在使用foreach的时候

  • Java Spring开发环境搭建及简单入门示例教程

    本文实例讲述了Java Spring开发环境搭建及简单入门示例.分享给大家供大家参考,具体如下: 前言 虽然之前用过Spring,但是今天试着去搭建依然遇到了困难,而且上网找教程,很多写的是在web里使用Spring MVC的示例,官方文档里的getting start一开始就讲原理去了(可能打开的方法不对).没办法,好不容易实验成功了,记下来免得自己以后麻烦. 添加依赖包 进入spring官网,切换到projects下点击 spring framework.官网上写的是以maven依赖的形式写

  • Java SSM框架(Spring+SpringMVC+MyBatis)搭建过程

    摘要: 这段时间搭建ssm环境,并测试几个下载的项目demo 安装相关文件: MyEclipse界面: 测试项目简单增删改: ssm+mysql+easyui项目: SSM+MYSQL+EXTJS项目 总结 以上所述是小编给大家介绍的Java SSM框架(Spring+SpringMVC+MyBatis)搭建过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • Spring+Mybatis+Mysql搭建分布式数据库访问框架的方法

    一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如何通过Spring+Mybatis构建多数据库访问的架构,并采用多线程提升数据库的访问效率. 需要说明一下,这种方式只适合数据库数量.名称固定,且不是特别多的情况.针对数据库数量不固定的情况,后面再写一篇处理方案. 二.整体方案 三.开发环境准备 3.1 下载Spring.Mybatis.Mysql

  • 一篇教会你写90%的shell脚本(入门小结)

    shell脚本? 在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls.cd.pwd等等.总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动.暂停.停止程序的运行或对计算机进行控制. shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效.安全.低成本地使用 Linux 内核,这就是 Shell 的本质.

  • springboot-curd基于mybatis项目搭建

    项目结构: pom.xml文件:   <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.2.2.RELEASE</version>         <relativePath/>  

随机推荐