0
点赞
收藏
分享

微信扫一扫

(十)Spring Boot 持久层技术【MyBatis】

天天天蓝loveyou 2022-01-17 阅读 91
spring boot

       MyBatis 一款优秀的持久层框架,原名叫作 iBaits, 2010 年由 ApacheSoftwareFoundation
迁移 Google Code 并改名为 MyBatis, 2013 年又迁移到 GitHub 上。MyBatis 支持定制化 SQL 、存储过程以及高级映射 MyBatis 乎避免了所有的 JDBC 代码手动设置参数以及获取结果集。在传统的 SSM 框架整合中 ,使用 MyBatis 需要大量 XML 配置,而 Spring Boot 中, MyBatis 官方提供了一套自动化配置方案,可以做到 MyBatis 开箱即用 。具体使用步骤如下​:

  1. 创建一个springboot项目,添加 MyBatis 依赖、数据库驱动依赖以及数据库连接地依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>
  1. 创建数据库、表、实体类、配置文件等
-- ----------------------------
-- Table structure for hr_user
-- ----------------------------
DROP TABLE IF EXISTS `hr_user`;
CREATE TABLE `hr_user`  (
  `id` bigint(20) NOT NULL,
  `age` tinyint(3) NULL DEFAULT NULL COMMENT '年龄',
  `name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名字',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 public class HrUser {
     //主键id
     private Integer id;
     //年龄
     private Integer age;
     //名字
     private String name;
	// 省略get/set方法
 }
server:
  port: 8080
spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
    username: root
    password: root123456

## 该配置节点为独立的节点,有很多人容易将这个配置放在spring的节点下,导致配置无法被识别
mybatis:
  mapper-locations: classpath:mapper/*.xml #注意:一定要对应mapper映射xml文件的所在路径
  typeAliasesPackage: com.weigang.entiy # 注意:对应实体类的路径

  1. 创建数据库访问层、service层、controller层
@Mapper
public interface HrUserMapper {
    //添加数据
    int addUser(HrUser user);
    //删除数据
    int deleteUserById(Integer id);
    //修改数据
    int updateUserById(HrUser user);
    //查询单条数据
    HrUserEntity getUserById();
    //获取用户列表
    List<HrUser> selectAllUser();
}
@Service
public class HrUserService {

    @Autowired
    private HrUserMapper hrUserMapper;

    public List<HrUser> getUsers(){
        List<HrUser> users = hrUserMapper.selectAllUser();
        return users;
    }
}
@RestController
@RequestMapping("/user")
public class HrUserController {

    @Resource
    private HrUserService hrUserService;

    @GetMapping(value = "/getUsers")
    public List<HrUser> getUsers(){
        return hrUserService.getUsers();//http://localhost:8080/user/getUsers
    }
}
  1. 创建 HrUserMapper.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.weigang.mybatis.mapper.HrUserMapper">

    <insert id="addUser" parameterType="com.weigang.mybatis.entity.HrUser">
        INSERT INTO hr_user(age, name)  VALUES (#{age}, #{name})
    </insert>

    <delete id="deleteUserById" parameterType="int">
        DELETE FROM hr_user WHER id=#{id}
    </delete>

    <update id="updateUserById" parameterType="com.weigang.mybatis.entity.HrUser">
        UPDATE hr_user set name=#{name} , age=#{age} WHERE id=#{id}
    </update>

    <select id="getUserById" parameterType="int" resultType="com.weigang.mybatis.entity.HrUser">
        SELECT * FROM hr_user WHERE id=#{id}
    </select>

    <select id="selectAllUser" resultType="com.weigang.mybatis.entity.HrUser">
        select * from hr_user
    </select>
</mapper>

6. 配置 pom.xml 文件

Maven 工程中 XML 置文件一般建议 resources 录下,但是有时候是将xml文件写在了与mapper接口同一包下,Maven在运行时会忽略包下的xml文件,因此可以在 pom .xm 文件中重新指明资源文件位置,配置如下:
在这里插入图片描述

<build>
   <resources>
       <resource>
           <directory>src/main/java</directory>
           <includes>
               <include>**/*.xml</include>
           </includes>
       </resource>
       <resource>
           <directory>src/main/resources</directory>
       </resource>
   </resources>
</build>

举报

相关推荐

0 条评论