增强Mybatis常用方案

我们在使用MyBatis时,通常不会去直接使用MyBatis持久层框架。大部分情况是使用MybatisGenenrator和MybatisPlus这两种方案。这两种方案属于Mybatis的增强方案,能够增加起功能性和易用性。

MybatisGenenrator

首先我们在pom.xml文件中引入maven相关依赖:

<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>1.3.2</version>
</dependency>12345复制代码类型:[java]

再修改一下application.yml文件:

spring:
  jackson:
 date-format: yyyy-MM-dd HH:mm:ss
 time-zone: GMT+8

  datasource:
   driver-class-name: com.mysql.cj.jdbc.Driver
   url: jdbc:mysql://localhost:3306/Family?useUnicode=true&characterEncoding=utf-8&useSSL=false
   username: root
   password: 123456mybatis:
  # 扫描.xml文件的路径
  mapper-locations: classpath:generator/*.xml
logging:
  level:
 com.javafamily.familydemo: debug1234567891011121314151617复制代码类型:[java]

在FamilyDemoApplication中配置Mapper类文件的包扫描路径。

package com.javafamily.familydemo;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan(basePackages = {"com.javafamily.familydemo.generator"})public class FamilyDemoApplication { public static void main(String[] args) {
  SpringApplication.run(FamilyDemoApplication.class, args);
 }
}12345678910111213复制代码类型:[java]

Mybatis代码很大一部分不需要我们自己手动编写。而是采用Mybatisgenerator等方式通过数据库结构帮助我们自动生成持久层代码从而提高开发效率。

Mybatisgenerator的主流实现方法有三种:

xml配置文件方式

编码实现MybatisGenerator代码生成配置方式

IDEA插件实现Mybatisgenerator代码生成配置方式

其中最方便的是第三种方法。

我们采用第三种方法来实现Mybatisgenerator代码,首先在IDEA中安装Mybatisgenerator插件。

在Plugins中搜索插件,点击install进行插件安装。

安装完成后,我们就可以开始使用了。

点击右侧Database,添加MySQL数据库:

连接数据库:

如果我们想生成表pets的持久层代码,双击pets表选择mybatis-generator:

我们需要进行简单的调整,将modelpackage和daopackage的路径修改一下:

路径修改完成后,点击ok。如果是第一次使用better-mybatis-generator插件,会要求输入数据库的账号和密码:

输入完成后,javafamily.familydemo下的generator文件会生成代码:

完成所有配置后我们来编写增删改查代码

PetsService接口中的代码不变,只需要修改PetsServiceImpl.java中的代码:

package com.javafamily.familydemo.service;import com.javafamily.familydemo.generator.Pets;import com.javafamily.familydemo.generator.PetsDao;import com.javafamily.familydemo.model.PetsVO;import com.javafamily.familydemo.utils.DozerUtils;import org.springframework.stereotype.Service;import org.dozer.Mapper;import javax.annotation.Resource;import java.util.List;@Servicepublic class PetsServiceImpl implements PetsService { @Resource
 protected Mapper dozerMapper; @Resource
 // mybatis generator会自动生成代码
 private PetsDao petsDao; @Override
 public void savePets(PetsVO pets) {
  Pets petsPO = dozerMapper.map(pets, Pets.class);
  petsDao.insert(petsPO);
 } @Override
 public void deletePets(long id) {
  petsDao.deleteByPrimaryKey(id);
 } @Override
 public void updatePets(PetsVO pets) {
  Pets petsPO = dozerMapper.map(pets, Pets.class);
  petsDao.updateByPrimaryKeySelective(petsPO);
 } @Override
 public PetsVO getPets(Long id) {  return dozerMapper.map(petsDao.selectByPrimaryKey(id), PetsVO.class);
 } @Override
 public List<PetsVO> getAll() {
  List<Pets> pets = petsDao.selectByExample(null);  return DozerUtils.mapList(pets, PetsVO.class);
 }
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051复制代码类型:[java]

执行代码,在postman中进行测试(注:执行代码之前先将上节编写的配置文件注释掉,否则会影响执行)

添加数据:

查询数据:

修改数据:

删除数据:

MybatisPlus

MybatisPlus相对于MybatisGenenrator功能更多、更强大。MybatisPlus是Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。

首先我们在pom.xml文件中引入maven依赖:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.3.2</version>
</dependency>12345复制代码类型:[java]

有了mybatis-plus-boot-starter依赖后就不需要mybatis-spring-boot-starter依赖了。

application.yml文件不需要改动。

在familydemo文件下创建mapper文件夹,并修改FamilyDemoApplication中@MapperScan的扫描路径:

package com.javafamily.familydemo;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan(basePackages = {"com.javafamily.familydemo.mapper"})public class FamilyDemoApplication { public static void main(String[] args) {
  SpringApplication.run(FamilyDemoApplication.class, args);
 }
}12345678910111213复制代码类型:[java]

model文件下的pets:

package com.javafamily.familydemo.model;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.util.Date;import java.util.List;@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class Pets { private long id; private String name; private String varieties; private Date createTime;
}1234567891011121314151617181920复制代码类型:[java]

在新建的mapper文件下创建petsMapper接口:

package com.javafamily.familydemo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.javafamily.familydemo.model.Pets;public interface PetsMapper extends BaseMapper<Pets> {

}123456789复制代码类型:[java]

BaseMapper中提供了若干关于增删改查的实现代码。继承BaseMapper之后就可以直接使用这些方法来操控表。

实现增删改查

再次改写PetsServiceImpl.java:

package com.javafamily.familydemo.service;import com.javafamily.familydemo.mapper.PetsMapper;import com.javafamily.familydemo.model.Pets;import com.javafamily.familydemo.utils.DozerUtils;import org.springframework.stereotype.Service;import javax.annotation.Resource;import org.dozer.Mapper;import java.util.List;@Servicepublic class PetsServiceImpl implements PetsService { @Resource
 protected Mapper dozerMapper; @Resource
 private PetsMapper petsMapper; @Override
 public void savePets(Pets pets) {
  Pets petsPO = dozerMapper.map(pets, Pets.class);
  petsMapper.insert(petsPO);
 } @Override
 public void deletePets(long id) {
  petsMapper.deleteById(id);
 } @Override
 public void updatePets(Pets pets) {
  Pets petsPO = dozerMapper.map(pets, Pets.class);
  petsMapper.updateById(petsPO);
 } @Override
 public Pets getPets(Long id) {  return dozerMapper.map(petsMapper.selectById(id), Pets.class);
 } @Override
 public List<Pets> getAll() {
  List<Pets> pets = petsMapper.selectList(null);  return DozerUtils.mapList(pets, Pets.class);
 }
}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849复制代码类型:[java]

执行代码,使用postman进行测试,增删改查功能全部正常。

注意事项

mybatisgenerator和MybatisPlus只适用于单表的操作。如果涉及关联查询、继承等。Mybatis文件和MySQL还是需要自己编写,而不是生成的代码基础上面改。

(0)

相关推荐

  • 一篇看懂shiro安全框架

    本篇框架使用:SpringBoot SpringMvc MyBatis shiro thymeleaf 我们先来了解一下shiro的基本知识 1.什么是Shiro权限框架 Apache Shiro是一 ...

  • 手把手教你SpringBoot整合MybatisPlus 代码生成器

    一.在pom.xml中添加所需依赖 <!-- MyBatis-Plus代码生成器--><dependency> <groupId>com.baomidou</ ...

  • 广东电网北斗地基增强系统建设方案及应用分析

    中国电工技术学会活动专区 CES Conference 已有的北斗地面基准站不能满足偏远地区输电系统定位需求,需要针对电力系统需求建设北斗地基增强系统.广州市泺立能源科技有限公司的研究人员焦炯.陈泓名 ...

  • 冻胚移植周期内膜准备常用方案

    冻胚移植周期内膜准备常用方案 一 自然周期方案 主要适用于月经周期规律.能正常排卵者.根据月经周期(一般自月经第10天)开始监测卵泡及内膜发育,出现优势卵泡后连续监测,同时需要结合尿LH或相应的激素血 ...

  • 佳文共享丨冻胚移植周期内膜准备常用方案

    一 自然周期方案 主要适用于月经周期规律.能正常排卵者.根据月经周期(一般自月经第10天)开始监测卵泡及内膜发育,出现优势卵泡后连续监测,同时需要结合尿LH或相应的激素血值来判断卵泡成熟情况,必要时可 ...

  • 磁共振上腹平扫 增强规范扫描方案操作视频

    "喜欢我到什么程度?"绿子问."整个世界的老虎全部融化成黄油."--村上春树<挪威的森林> 磁共振 上 腹 平扫+增强规范扫描方案 实录操作视频 扫 ...

  • MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用

    前言: 学习框架一个比较好的路径阅读源码.本文介绍的SqlSessionFactory和SqlSession.可以通过了解SqlSessionFactory接口和SqlSession接口以及两个的实现 ...

  • 【CICC原创】基于空时分组码的Link-16全空域增强传输方案

    摘要 飞机间利用Link-16 进行战术与指挥控制信息交互时,若只采用单天线通信,在一些场景中由于信号受机体遮挡会导致通信质量严重下降,甚至通信中断,无法实现全空域通信.针对这一问题,提出在机背和机腹 ...

  • 药店专业用药方案:20种常用失眠药物解析及联合用药方案!-164

    睡眠障碍是指睡眠的数量.质量.时间或节律紊乱.睡眠障碍性疾患包括失眠症.发作性睡病.阻塞性睡眠呼吸暂停综合征.不安腿综合征等.本文介绍失眠症的药物治疗.一.临床表现女性.老年人更多见.表现为四种类型: ...

  • 常用32种卫生间平面优化方案!

    建筑有点料 每日一例优秀案例 公众号 来源:壹品曹  ID: top_interiordesign 住宅设计中,卫生间和厨房其实是最难,也是最有意思的空间,体现设计师平面方案能力,往往就在厨卫.今天, ...

  • 收藏 常用加解密工具集合|视频图片加解密方案

    今天 以下文章来源于转行程序员 ,作者王炸 转行程序员你要再说我写的文章没用我可就要报警了!! 最近工作需要做视频加密解密,大概需求就是摄像头录制好的视频实时加密存储到本地,防止别人拔掉存储卡把视频拷 ...