SpringBoot - 整合MyBatis

发布时间 2023-03-25 04:49:19作者: 家兴Java

SpringBoot整合MyBatis

1、环境搭建

1、新建项目

2、导入依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

3、编写配置文件

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

4、测试类运行测试

@SpringBootTest
class Springboot05MybatisApplicationTests {

    @Autowired
    DataSource dataSource;
    @Test
    void contextLoads() throws SQLException {
        System.out.println("getClass ===>" + dataSource.getClass());
        System.out.println("getConnection ===>" + dataSource.getConnection());
    }

}

2、创建实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String pwd;
}

(如要使用如上三个注解,需要导入Lombok依赖)

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
</dependency>

3、创建Mapper接口

@Mapper // 这个注解表示了这是一个mybatis的mapper类
@Repository
public interface UserMapper {

    // 查询全部用户
    List<User> queryUserList();

    // 根据Id查询用户
    User queryUserById();

    // 增加用户
    int addUser(User user);

    // 删除用户
    int deleteUser(int id);

    // 修改用户
    int updateUser(User user);
    
}

如不写@Mapper,可在主程序入口添加扫描包注解@MapperScan("com.kuang.mapper"),该包下所有接口都会被扫描

4、编写UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.mapper.UserMapper">
    <select id="queryUserList" resultType="user">
        select * from mybatis.user
    </select>
    
    <select id="queryUserById" resultType="user">
        select * from mybatis.user where id = #{id}
    </select>

    <insert id="addUser" parameterType="user">
        insert into mybatis.user (id, name, pwd) VALUES (#{id},#{name},#{pwd})
    </insert>

    <update id="updateUser" parameterType="user">
        update mybatis.user
        set name = #{name},
            pwd  = #{pwd}
        where id = #{id};
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id}
    </delete>
</mapper>

别名要在application.yaml文件中配置

mybatis:
  type-aliases-package: com.kuang.pojo
  # 文件路径
  mapper-locations: classpath:com/kuang/mapper/*.xml

全注解开发

1、编写UserMapper类

@Mapper
@Repository
public interface UserMapper {
    // 查询全部
    @Select("select * from mybatis.user")
    List<User> queryAll();

    // 根据id查询
    @Select("select * from mybatis.user where id = #{id}")
    User getById(@Param("id") int id);

    // 添加
    @Insert("insert into mybatis.user(`id`,`name`,`pwd`) values(#{id},#{name},#{pwd})")
    int addUser(User user);

    // 修改
    @Update("update mybatis.user set `name` = #{name},`pwd` = #{pwd} where `id` = #{id}")
    int updateUser(User user);

    // 删除
    @Delete("delete from mybatis.user where `id` = #{id}")
    int deleteUser(@Param("id")int id);
}

省略了UserMapper.xml配置文件的编写

2、如以往一样用其他类调用就可以了