Spring Boot 整合之Mybatis

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40369944/article/details/83897396

1.引入Mybatis、MySQL依赖

注意:这里不引入spring-boot-starter-jdbc依赖,是由于mybatis-spring-boot-starter中已经包含了此依赖。

        <!-- springboot,mybatis 整合包 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

MyBatis-Spring-Boot-Starter依赖将会提供如下:

  1. 自动检测现有的DataSource。
  2. 将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递。
  3. 将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
  4. 自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。

 

就是说,使用了该Starter之后,只需要定义一个DataSource即可(application.properties中可配置),它会自动创建使用该DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。会自动扫描你的Mappers,连接到SqlSessionTemplate,并注册到Spring上下文中。

2.配置数据库连接:

在 application.properties 中添加:

#数据连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root123

# mybatis 配置
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

3.在 src/main/resources 下创建 mybatis 文件夹,并在 mybatis 文件夹中创建 "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>
    <settings>
        <!-- 获取数据库自增主键值 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 使用列别名替换列名,默认为 true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 开启驼峰命名转换:Table(create_time) => Entity(createTime) -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

mybatis 文件夹下再创建一个 "mapper" 文件夹,里边存放 Mpper 接口对应的 mapper 映射文件。

4.测试

4.1建表

CREATE TABLE t_user(
u_id INT PRIMARY KEY auto_increment COMMENT "ID",
u_name VARCHAR(20) NOT NULL COMMENT "用户姓名"
)COMMENT="用户"

4.2实体类

package club.lygangdai.pojo;

public class User {
    private Integer uId;
    private String uName;

}

此处省略setter和getter

4.3Mapper接口

package club.lygangdai.dao;

import club.lygangdai.pojo.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserDao {

    int insertUser(User user);

    User getUserById(Integer uid);

    int updateUser(User user);

    int deleteUserById(Integer uid);
}

Mapper 接口需要添加 @Mapper 注解,如果不想使用该注解,可以在启动类上使用 @MapperScan 配置 Mapper 接口路径

@SpringBootApplication
@MapperScan("club.lygangdai.dao")
public class SpringbootMybatisJspApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisJspApplication.class, args);
    }
}

mybatis/mapper/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="club.lygangdai.dao.UserDao">

    <insert id="insertUser" parameterType="club.lygangdai.pojo.User">
        insert into t_user(u_name) values(#{uName})
    </insert>

    <select id="getUserById" parameterType="java.lang.Integer" resultType="club.lygangdai.pojo.User">
        select u_id,u_name from t_user where u_id = #{uId}
    </select>

    <update id="updateUser" parameterType="club.lygangdai.pojo.User">
        update t_user set u_name = #{uName} where u_id = #{uId}
    </update>

    <delete id="deleteById" parameterType="java.lang.Integer">
        delete from t_user where u_id = #{uId}
    </delete>

</mapper>

4.4测试

4.4.1创建controller

@Controller
@RequestMapping("user")
public class UserController {

    @Resource
    private UserDao userDao;

    @RequestMapping(value = "getUser",produces="text/html;charset=UTF-8")
    @ResponseBody
    public User getUser(){
        User user = userDao.getUserById(1);
        return user;
    }
}

注:返回的是json格式,我之前已做配置

转json请看https://blog.csdn.net/qq_40369944/article/details/83898752

数据库添加一条默认数据

查询结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_40369944/article/details/83897396