详解Spring Boot中MyBatis的使用方法

作者:winner_0715 时间:2023-08-22 17:25:01 

orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis。

hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是spring data jpa这种模式了,基本上根据方法名就可以生成对应的sql了。

mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。

mybatis-spring-boot-starter

官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot

其实就是myBatis看spring boot这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。

当然任何模式都需要首先引入mybatis-spring-boot-starter的pom文件,现在最新版本是1.1.1


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

无配置文件注解版

就是一切使用注解搞定。

实在是不喜欢把sql用注解的形式写在java类中的形式,所以就忽略吧...

下面讨论一下xml版本

1 添加相关maven依赖


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.example</groupId>
 <artifactId>spring-boot-mybatis</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>spring-boot-mybatis</name>
 <description>Demo project for Spring Boot</description>
 <!--
   spring boot 父节点依赖,
   引入这个之后相关的引入就不需要添加version配置,
   spring boot会自动选择最合适的版本进行添加。
  -->
 <parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.5.3.RELEASE</version>
   <relativePath/>
 </parent>
 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   <java.version>1.8</java.version>
 </properties>
 <dependencies>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     <scope>test</scope>
   </dependency>
   <!--MySQL数据库驱动-->
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
   </dependency>
   <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>1.1.1</version>
   </dependency>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
     <optional>true</optional>
   </dependency>
 </dependencies>
 <build>
   <plugins>
     <plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
       <configuration>
         <fork>true</fork>
       </configuration>
     </plugin>
   </plugins>
 </build>
</project>

2.在applications.properties配置文件中添加MySQL的配置


spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

Spring boot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,对了你一切都不用管了,直接拿起来使用就行了。

3.编写测试实体类DemoInfo


package com.winner.po;
public class DemoInfo {
 private Integer id;
 private String name;
 private String password;
 public Integer getId() {
   return id;
 }
 public void setId(Integer id) {
   this.id = id;
 }
 public String getName() {
   return name;
 }
 public void setName(String name) {
   this.name = name;
 }
 public String getPassword() {
   return password;
 }
 public void setPassword(String password) {
   this.password = password;
 }
}

4.编写Mapper接口


package com.winner.mapper;
import com.winner.po.DemoInfo;
public interface DemoInfoMapper {
 DemoInfo queryById(Integer id);
}

在启动类中使用@MapperScan注解扫描mapper接口


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.winner.mapper")
public class SpringBootMybatisApplication {
 public static void main(String[] args) {
   SpringApplication.run(SpringBootMybatisApplication.class, args);
 }
}

5.编写配置文件

DemoInfoMapper.xml


<?xml version="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.winner.mapper.DemoInfoMapper">
 <resultMap id="BaseResultMap"
   type="com.winner.po.DemoInfo">
   <id column="id" property="id" jdbcType="INTEGER" />
   <result column="name" property="name" jdbcType="VARCHAR" />
   <result column="password" property="password" jdbcType="VARCHAR" />
 </resultMap>
 <sql id="Base_Column_List">
   id, name, password
 </sql>
 <select id="queryById" resultMap="BaseResultMap"
   parameterType="java.lang.Integer">
   select
   <include refid="Base_Column_List" />
   from demo_info
   where id = #{id}
 </select>
</mapper>

mybatis-config.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
   "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <!--根据需要加入有关配置-->
</configuration>

注意,需要在application.properties新增以下配置


mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

指定了mybatis基础配置文件和实体类映射文件的地址

6.编写DemoInfoService


@Service
public class DemoInfoService {
 @Resource
 private DemoInfoMapper demoInfoMapper;
 DemoInfo queryById(Integer id){
   DemoInfo demoInfo = demoInfoMapper.queryById(id);
   return demoInfo;
 }
}

7.编写DemoInfoController


@RestController
public class DemoInfoController {
 @Resource
 private DemoInfoService demoInfoService;
 @RequestMapping("/{id}")
 DemoInfo queryById(@PathVariable Integer id){
   DemoInfo demoInfo = demoInfoService.queryById(id);
   return demoInfo;
 }
}

运行访问:http://127.0.0.1:8080/1,运行结果:


{"id":1,"name":"zhangsan","password":"123456"}

总结

以上所述是小编给大家介绍的Spring Boot中MyBatis的使用方法网站的支持!

来源:http://www.cnblogs.com/winner-0715/p/6687246.html

标签:spring,boot,mybatis
0
投稿

猜你喜欢

  • C# 实现绘制PDF嵌套表格案例详解

    2023-05-25 11:57:13
  • springboot项目部署到宝塔的详细图文教程

    2023-03-27 05:24:31
  • Java使用DateTimeFormatter格式化输入的日期时间

    2023-03-09 04:52:38
  • Java设计模式之命令模式

    2022-06-17 22:49:07
  • 90分钟实现一门编程语言(极简解释器教程)

    2022-01-15 05:11:56
  • java中staticclass静态类详解

    2021-10-12 19:47:35
  • Java8中CompletableFuture的用法全解

    2023-09-08 15:08:55
  • Android自定义顶部导航栏控件实例代码

    2022-02-11 13:43:16
  • java之swing下拉菜单实现方法

    2023-07-12 04:55:30
  • Android定时器Timer的停止和重启实现代码

    2022-10-03 23:25:43
  • redis实现队列的阻塞、延时、发布和订阅

    2021-07-02 10:56:19
  • java线程池参数位置导致的夺命故障宿主机打不开

    2021-09-29 23:27:34
  • java与c#的语法区别详细介绍

    2022-05-02 14:01:10
  • Java DecimalFormat 保留小数位及四舍五入的陷阱介绍

    2023-11-09 04:49:33
  • 实现分布式WebSocket集群的方法

    2021-06-12 22:55:10
  • SpringMVC配置多个properties文件之通配符解析

    2021-10-18 02:19:02
  • SpringBoot2.0集成MQTT消息推送功能实现

    2022-02-28 01:55:04
  • Android中SeekBar和RatingBar用法实例分析

    2023-07-28 00:13:59
  • Java比较问题详细分析

    2023-11-20 14:30:48
  • 详解解密Java中的类型转换问题

    2023-11-24 20:46:28
  • asp之家 软件编程 m.aspxhome.com