现在大多数的java开发数据持久化使用的都是mybatis。究其原因,mybatis是一个轻量级的数据库持久化框架。
在spring框架整合mybatis中需要大量的配置文件,非常的复杂,虽然也出现了generator工具自动生成配置文件,但是前期的配置还是让我们开发人员觉得繁琐。
在springBoot中mybatis的配置可以通过注解或者是简单配置就可以实现springBoot+Mybatis的整合,下面我们看看实现的方式。
mybatis看到springBoot热度很高,自己也开发了一套配置的解决方案----mybatis-spring-boot-starter
我们不管使用配置模式还是注解模式,都需要先依赖mybatis的jar包。idea中maven配置如下
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
注解版(无配置文件):
maven的pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
完整的代码段在博主的github上,感兴趣的可以去看看。
2:数据库连接配置application.yml
配置文件由.properties修改为.yml文件是由于yml是以树形格式展示的,代码看起来更整齐和易读。下面直接上配置
mybatis:
type-aliases-package:com.example.springBootmybatis.domain.mapper
spring:
datasource:
data-username: root
data-password: 123
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/hn_jxxm_monitor
3:编写mapper文件
@Select("select *from user")
@Results({
@Result(property = "userName", column = "user_name")
})
List<UserEntity> getAllUsers();
@Select("SELECT *FROM user WHERE id = #{id}")
UserEntity getOne(Long id);
@Insert("insert into user(email,password,phone,user_name,create_date) values(#{email},#{passWord},#{phone},#{userName},now())")
void insert(UserEntity userEntity);
@Update("update user set user_name = #{userName},email=#{email} where id = '${id}'")
void update(UserEntity userEntity);
@Delete("delete from user where id = #{id}")
void delete(Long id);
增删改查都可以通过注解的方式,其中@Results表示实体类属性对应数据库表列,没有差异则不需要该注解。
接下来配置mapper文件的加载,有两种方式,①:在mapper类上添加@mapper注解,所有的都需要添加 ②:在springboot启动类上添加@MapperScan扫描注解
@SpringBootApplication
@MapperScan("com.example.springBootmybatis.domain.mapper")
public class SpringBootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisApplication.class, args);
}
}
推荐使用第二种配置,这样编码量小,而且不会发生漏掉注解的情况。
然后在调用类中注入该mapper就可以正常使用了,完整代码可以查看github。
通过配置实现(比spring中简单很多)
配置文件添加mybatis配置
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/***
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
然后在resources文件夹下创建mapper配置文件,目录结构如下
然后编写UserMapper.xml和UserMapper.java文件。
<?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.example.springBootmybatis.domain.mapper.UserMapper" >
<resultMap id="BaseResultMap" type="com.example.springBootmybatis.domain.entity.UserEntity" >
<id column="id" property="id" jdbcType="BIGINT" />
</resultMap>
<sql id="Base_Column_List" >
id
</sql>
<select id="getAll" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM user
</select>
</mapper>
package com.example.springBootmybatis.domain.mapper;
import com.example.springBootmybatis.domain.entity.UserEntity;
import java.util.List;
/**
* @ClassName UserMapper
* @Author nothingToSay
* @Date 2018/11/22 14:32
**/
public interface UserMapper {
List<UserEntity> getAll();
}
配置完成,我们启动项目访问正常。配置文件整合也是非常简单的方式。扫描mapper文件配置在启动类中@MapperScan
完整代码:代码