返回 导航

SpringBoot / Cloud

hangge.com

SpringBoot - 使用MyBatis操作数据库1(安装配置,基本用法)

作者:hangge | 2019-11-15 08:10

一、基本介绍

1,什么是 MyBatis


2,安装配置

mybatis-spring-boot-starterMyBatis 依赖
mysql-connector-javaMySQL 数据库驱动
druidDruid 是阿里巴巴开发的号称为监控而生的数据库连接池,也是目前最好的数据库连接池。
<!-- MyBatis依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

<!-- 数据库驱动依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

(2)接着在 application.properties 中配置数据库连接信息:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/hangge?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=hangge1234

二、基本用法

1,创建实体类

(1)假设我们数据库表结构如下:

(2)创建对应的 User 实体类:
@Setter
@Getter
@NoArgsConstructor
@ToString
public class User {
    private Integer id;
    private String userName;
    private String passWord;
}

2,创建数据库访问层

(1)首先创建 UserMapper 接口:
要指明一个类是 Mapper 有如下两种方式:
  • 一种如本样例所示,在 UserMapper 上添加 @Mapper 注解,表明该接口是一个 MyBatis 中的 Mapper。这种方式就是需要在每一个 Mapper 上都添加注解。
  • 另一种更简单的方式是在配置类上添加 @MapperScan("com.example.demo.mapper") 注解,表示扫描 com.example.demo.mapper 包下的所有接口作为 Mapper。这样就不需要在每个接口上配置 @Mapper 注解了。
@Mapper
public interface UserMapper {
    int addUser(User user);
    int updateUser(User user);
    int deleteUserById(Integer id);
    User getUserById(Integer id);
    List<User> getAllUsers();
}

(2)接着在 UserMapper 相同的位置创建 UserMapper.xml 文件,内容如下:
代码说明:
  • 针对 UserMapper 接口中的每一个方法都在 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.example.demo.mapper.UserMapper">
    <insert id="addUser" parameterType="com.example.demo.bean.User">
        INSERT INTO users(username, password) VALUE (#{userName}, #{passWord})
    </insert>
    <delete id="deleteUserById" parameterType="int">
        DELETE FROM users WHERE id=#{id}
    </delete>
    <update id="updateUser" parameterType="com.example.demo.bean.User">
        UPDATE users set username=#{userName}, password=#{passWord} WHERE id=#{id}
    </update>
    <select id="getUserById" parameterType="int" resultType="com.example.demo.bean.User">
        SELECT * FROM users WHERE id=#{id}
    </select>
    <select id="getAllUsers" resultType="com.example.demo.bean.User">
        SELECT * FROM users
    </select>
</mapper>

(3)由于在 Maven 工程中,XML 配置文件建议写在 resources 目录下,但上面的 UserMapper.xml 文件写在包下,Maven 在运行时会忽略包下的 XML 文件。因此需要在 pom.xml 文件中重新指明资源文件位置,配置如下:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <!-- 重新指明资源文件位置 -->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

3,创建 Controller 

我们在 Controller 中通过调用 UserMapper 进行数据的增、删、改、查操作。
@RestController
public class HelloController {

    @Autowired
    UserMapper userMapper;

    @RequestMapping("/test")
    public void test(){
        // 新增数据
        User user1 = new User();
        user1.setUserName("hangge");
        user1.setPassWord("123456");
        int i1 = userMapper.addUser(user1);
        System.out.println("插入一条数据>>>" + i1);

        // 修改数据
        User user2 = new User();
        user2.setId(1);
        user2.setPassWord("888888");
        int i2 = userMapper.updateUser(user2);
        System.out.println("更新一条数据>>>" + i2);

        // 删除数据
        int i3 = userMapper.deleteUserById(12);
        System.out.println("删除一条数据>>>" + i3);

        // 查询单条数据
        User user4 = userMapper.getUserById(1);
        System.out.println("查询1条数据>>>" + user4.toString());

        // 查询多条数据
        List<User> users = userMapper.getAllUsers();
        System.out.println("查询多条数据>>>" + users);

        return;
    }
}

4,运行测试

在浏览器中访问 http://localhost:8080/test 地址,可以看到控制台打印出的日志如下:
评论

全部评论(0)

回到顶部