栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 依赖

  
   com.baomidou
   mybatis-plus-boot-starter
   2.3
  
  
  
   org.apache.velocity
   velocity-engine-core
   2.0
  

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

application.properties

mybatis-plus.mapper-locations=classpath:/mapper
 @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();
 }

 
 @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;


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 已经继承了基类,为我们封装了很多方法,下面看几个简单的例子。


@Controller
@RequestMapping("/cable")
public class CableController {
 
 @Autowired private CableService cableService;
 
 
 @RequestMapping("/1")
 @ResponseBody
 public Object test1() {
  // 构造实体对应的 EntityWrapper 对象,进行过滤查询
  EntityWrapper ew = new EntityWrapper<>();
  ew.where("type={0}", 1)
    .like("name", "王")
    .and("core_number={0}", 24)
    .and("is_delete=0");
  List list = cableService.selectList(ew);
  List> maps = cableService.selectMaps(ew);
  System.out.println(list);
  System.out.println(maps);
  return "ok";
 }
 
 
 @RequestMapping("/2")
 @ResponseBody
 public Object test2() {
  // 构造实体对应的 EntityWrapper 对象,进行过滤查询
  EntityWrapper ew = new EntityWrapper<>();
  ew.where("type={0}", 1)
//    .like("name", "王")
    .and("core_number={0}", 24)
    .and("is_delete=0");
  Page page = new Page<>(1,10);
  Page pageRst = cableService.selectPage(page, ew);
  return pageRst;
 }
 
 
 @RequestMapping("/3")
 @ResponseBody
 public Object test3() {
  Object vl = null;
  // 构造实体对应的 EntityWrapper 对象,进行过滤查询
  EntityWrapper ew = new EntityWrapper<>();
  ew.setSqlSelect("id, `name`, "
    + "case typen" + 
    "when 1 then '220kv'n" + 
    "end typeName")
    .where("type={0}", 1)
//    .like("name", "王")
    .where(false, "voltage_level=#{0}", vl);//当vl 为空时,不拼接
  Page page = new Page<>(1,10);
  Page pageRst = cableService.selectPage(page, ew);
  return pageRst;
 }
 
 
 @RequestMapping("/4")
 @ResponseBody
 public Object test4() {
  Cable c = new Cable();
  c.setName("测试光缆");
  cableService.insert(c);
  return "ok";
 }
 
 
 @RequestMapping("/5")
 @ResponseBody
 public Object test5() {
  Cable c = cableService.selectById(22284l);
  c.setName("测试光缆2222");
  c.setType(1);
  cableService.updateById(c);
  return "ok";
 } 
}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/140740.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号