1.mybatis是什么

MyBatis 是一个开源的持久层框架,它主要用于将数据库操作与 Java 对象之间的映射进行配置和执行。它提供了一种简单且灵活的方式来实现数据库访问,同时也解决了传统的 JDBC 编码中的很多问题。MyBatis 的核心思想是通过 XML 或注解来配置 SQL 语句,将 SQL 语句与 Java 方法进行关联,从而提供了一种面向对象的方式来操作数据库。它支持多种数据库,且易于集成到 Java 项目中。MyBatis 已经成为了一些大型企业级 Java 项目的首选持久层框架之一。

2.集成mybatis

2.1. 引入相关依赖

2.1.1. mybatis

mybatis直接通过mybatis-spring-boot-starter进行快速集成,采用版本为1.3.2对应的mybatis版本为3.4.6。不需要单独去引入mybatis的依赖包在mybatis-spring-boot-starter直接帮我们引入的相关的依赖包

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.2</version>
</dependency>

007集成mybatis_spring

2.1.2. lombok

引入lombok简化代码量提高可阅读性,Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,就有一个功能齐全的构建器、自动记录变量等等

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.16.22</version>
  <scope>provided</scope>
</dependency>

2.2. 创建测试数据库表

创建数据库表demo字段如下

CREATE TABLE `demo` (
 `id` bigint NOT NULL COMMENT '主键id',
 `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '姓名',
 `age` int DEFAULT NULL COMMENT '年龄',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2.3. 配置相关属性

2.3.1. mybatis配置

mybatis:
 #实体对象包的地址
typeAliasesPackage: com.zhuhuo.modual.entity
 #mapper.xml文件地址
mapperLocations: classpath*:mapper/*Mapper.xml

2.4. 编写测试程序

2.4.1. 创建实体对象

在com.zhuhuo.modual.entity下创建文件DemoEntity

@Data
public class DemoEntity {

   private Long id;

   private String name;

   private Integer age;
}

2.4.2. 创建控制层

在DemoController类下创建方法findDemoList,并设置返回内容为json格式

@ResponseBody
@GetMapping(value = "/findDemoList")
public List<DemoEntity> findDemoList(){
 return demoService.findDemoList();
}

2.4.3. 创建mapper接口

在com.zhuhuo.modual.mapper下创建文件DemoMapper并定义方法findDemoList()

public interface DemoMapper {

   List<DemoEntity> findDemoList();
}

2.4.4. 创建mapper.xml

在resource文件夹下创建mapper文件夹并创建DemoMapper.xml文件.实现findDemoList方法

<?xml versinotallow="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhuhuo.modual.mapper.DemoMapper">
   <resultMap id="BaseResultMap" type="com.zhuhuo.modual.entity.DemoEntity">
       <id column="id" property="id" jdbcType="BIGINT"/>
       <id column="name" property="name" jdbcType="VARCHAR"/>
       <id column="age" property="age" jdbcType="INTEGER"/>
   </resultMap>

   <select id="findDemoList" resultMap="BaseResultMap">
      select id,name,age from demo
   </select>
</mapper>

2.4.5. 创建service

在com.zhuhuo.modual.service下创建demo接口

public interface DemoService {
   List<DemoEntity> findDemoList();
}

在com.zhuhuo.demo.service.impl下创建demo接口的实现类

@Service("DemoService")
public class DemoServiceImpl implements DemoService {

   @Autowired
   private DemoMapper demoMapper;

   @Override
   public List<DemoEntity> findDemoList() {
       List<DemoEntity> demoEntityList = demoMapper.findDemoList();
       return demoEntityList;
  }
}

2.4.6. 添加注解MapperScan

在启动类中添加注解 @MapperScan并设置扫描包为com.zhuhuo.modual.mapper

@MapperScan(basePackages = "com.zhuhuo.modual.mapper")
@SpringBootApplication
public class ZhuhuoBlogApplication {

   public static void main(String[] args) {
       SpringApplication.run(ZhuhuoBlogApplication.class,args);
  }
}

2.4.7.测试验证

007集成mybatis_Java_02

3.替换tkmybatis

上面呢 我们对mybatis进行了基础的集成,如果说习惯写sql的到这一个步骤其实也算集成完毕了,但是为了简化我们的代码量,提高效率希望减少基本crud的sql编写,为此我们对mybatis进行拓展一下,集成tkmybatis.当然了除了tk,其实还有mybatis-plus可供大家选择,有兴趣的可以私底下研究研究

TKMybatis 是基于 Mybatis框架开发的一个工具,内部实现了对单表的基本数据操作,只需要简单继承 TKMybatis 提供的接口,就能够实现无需编写任何 sql 即能完成单表操作。

3.1. 引入相关依赖

3.1.1. 移除原生mybatis

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

3.1.2. 引入tkmybatis

<dependency>
  <groupId>tk.mybatis</groupId>
  <artifactId>mapper-spring-boot-starter</artifactId>
  <version>2.1.5</version>
</dependency>

3.2. 修改测试程序

3.2.1. 修改实体对象

修改实体对象增加注解@Table ,@Id

@Data
@Table(name = "demo")
public class DemoEntity {

   @Id
   private Long id;

   private String name;

   private Integer age;
}

3.2.2. 修改Mapper

修改mapper 继承Mapper<?>

public interface DemoMapper extends Mapper<DemoEntity> {
   List<DemoEntity> findDemoList();
}

3.2.3. 修改service

@Override
public List<DemoEntity> findDemoList() {
 List<DemoEntity> demoEntityList = demoMapper.selectAll();
 return demoEntityList;
}

3.2.4. 修改注解MapperScan

ZhuhuoBlogApplication下@MapperScan注解依赖包变更为import tk.mybatis.spring.annotation.MapperScan;

3.2.5. 测试验证

007集成mybatis_Java_03