SpringBoot集成Mybatis
在 Spring+SpringMVC 中整合 MyBatis 步骤还是有点复杂的,要配置多个 Bean。
Spring Boot 中对此做了进一步的简化,使 MyBatis 基本上可以做到开箱即用,本文就来看看在 Spring Boot 中 MyBatis 要如何使用:
首先创建一个基本的 Spring Boot 工程,添加 Web 依赖,MyBatis 依赖以及 MySQL 驱动依赖,创建成功后,添加Druid依赖,并且锁定MySQL驱动版本,完整的依赖如下:
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
MyBatis 和 Druid 依赖的命名和其他库的命名不太一样,是属于 xxx-spring-boot-stater 模式的,这表示该 starter 是由第三方提供的。
在配置文件中配置数据库连接信息:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/boot_demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: tp123456
配置完成后,MyBatis 就可以创建 Mapper 来使用了,例如我这里直接创建一个 userMapper,如下:
package com.tp.boot.demo.mapper;
import com.tp.boot.demo.domain.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface UserMapper {
/**
* 根据条件查询符合条件的用户信息
*
* @param paramMap 查询条件
* @return 用户信息集合
*/
List<User> getUserByMap(Map<String, Object> paramMap);
/**
* 新建用户
*
* @param user 用户信息
* @return 影响行数
*/
int saveUser(User user);
/**
* 根据主键ID获取用户信息
* @param id 主键ID
* @return 用户信息
*/
User getUserById(Integer id);
}
UserMapper.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.tp.boot.demo.mapper.UserMapper">
<resultMap id="resultMap" type="com.tp.boot.demo.domain.User">
<id column="id" property="id"/>
<result column="user_name" property="userName"/>
<result column="pass_word" property="passWord"/>
<result column="sex" property="sex"/>
<result column="status" property="status"/>
<result column="mobile" property="mobile"/>
<result column="department_name" property="departmentName"/>
<result column="company_account" property="companyAccount"/>
<result column="email" property="email"/>
<result column="remark" property="remark"/>
<result column="create_time" property="createTime"/>
<result column="create_user_name" property="createUserName"/>
<result column="update_time" property="updateTime"/>
<result column="update_user_name" property="updateUserName"/>
</resultMap>
<sql id="Base_Column_List">
id,
user_name,
pass_word,
sex,
status,
mobile,
department_name,
company_account,
email,
remark,
create_time,
create_user_name,
update_time,
update_user_name
</sql>
<select id="getUserByMap" parameterType="java.util.Map" resultType="com.tp.boot.demo.domain.User">
select
<include refid="Base_Column_List"/>
from `user`
<where>
<if test="status != null">
and status = #{status}
</if>
<if test="userName != null and userName != ''">
and user_name = #{userName}
</if>
</where>
order by create_time desc
</select>
<insert id="saveUser" parameterType="com.tp.boot.demo.domain.User" useGeneratedKeys="true" keyProperty="id"
keyColumn="id">
insert into `user`
(
user_name,
pass_word,
sex,
status,
mobile,
department_name,
company_account,
email,
remark,
create_time,
create_user_name,
update_time,
update_user_name
)
value
(
#{userName},
#{passWord},
#{sex},
#{status},
#{mobile},
#{departmentName},
#{companyAccount},
#{email},
#{remark},
#{createTime},
#{createUserName},
#{updateTime},
#{updateUserName}
)
</insert>
<select id="getUserById" parameterType="integer" resultType="com.tp.boot.demo.domain.User">
select
<include refid="Base_Column_List"/>
from `user`
where id = #{value}
limit 1
</select>
</mapper>
在配置文件中指定mapper.xml的位置,项目结构及配置信息如下:

打开浏览器访问http://localhost:8080/user/list
效果如下:

至此,说明操作数据库成功
网友评论