美文网首页
SpringBoot-集成Mybatis

SpringBoot-集成Mybatis

作者: Tian_Peng | 来源:发表于2020-05-08 23:19 被阅读0次

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
效果如下:

至此,说明操作数据库成功

相关文章

网友评论

      本文标题:SpringBoot-集成Mybatis

      本文链接:https://www.haomeiwen.com/subject/jrxqxctx.html