软件编程
位置:首页>> 软件编程>> java编程>> 详解Spring Boot中MyBatis的使用方法

详解Spring Boot中MyBatis的使用方法

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

标签:spring,boot,mybatis

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com