Spring Boot整合MyBatis进行数据库的操作

1、MyBatis简介

MyBatis的前身是Apache社区的一个开源项目iBatis,于2010年更名为MyBatis。MyBatis是支持定制化SQL、存储过程和高级映射的优秀持久层框架。它避免了几乎所有的JDBC代码、手动设置参数和获取结果集的操作,使得开发人员更加关注SQL本身和业务逻辑,不用再花费时间关注整个复杂的JDBC操作过程。

MyBatis的结构图。

 

 

 MyBatis的优点如下所示。

①封装了JDBC大部分操作,减少了开发人员的工作量

②半自动化的操对于编写SQL语句灵活度更高

③Java代码与SQL语句分离,降低维护难度

④自动映射结果集,减少重复的编码工作⑤开源社区十分活跃,文档齐全,学习成本低

 

2、添加依赖

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

这样,MyBatis的场景启动器和相关依赖就整合进Spring Boot项目中了

idea新建:

 

 

 

 

 

3、application.properties的配置

# mybatis config
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

mybatis.mapper-locations:配置Mapper文件对应的XML文件路径。

 

4、启动类增加Mapper扫描

在启动类中添加对Mapper包的扫描@MapperScan,Spring Boot在启动的时候会自动加载包路径下的Mapper接口。代码如下所示:

package com.example.sp0217b;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("com.example.sp0217b.dao")
@SpringBootApplication
public class Sp0217bApplication {

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

}

 

5、在MySQL中先创建一张表

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 100137
Source Host           : localhost:3306
Source Database       : newbee_mall_db

Target Server Type    : MYSQL
Target Server Version : 100137
File Encoding         : 65001

Date: 2022-02-17 16:36:13
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL DEFAULT '' COMMENT '登录名',
  `password` varchar(100) NOT NULL DEFAULT '' COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=975964 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', 'Spring Boot', '123456');
INSERT INTO `tb_user` VALUES ('2', 'java', '123456');
INSERT INTO `tb_user` VALUES ('3', 'Mybatis', '123456');
INSERT INTO `tb_user` VALUES ('4', 'Thymeleaf', '123456');

 

6、新建实体类和Mapper接口

新建entity包并在entity包下新建User类,将tb_user中的字段映射到该实体类中,代码如下所示:

package com.example.sp0217b.entity;

public class User {
    private Integer id;
    private String name;
    private String password;

    public void setId(Integer id){
        this.id =id;
    }
    public  String getName (){
        return  name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getPassword(){
        return password;
    }
    public void setPassword(String password){
        this.password = password;
    }
}

新建dao包并在dao包中新建UserDao接口,并定义增、删、改、查四个方法,代码如下所示:

package com.example.sp0217b.dao;
import com.example.sp0217b.entity.User;
import java.util.List;
public interface UserDao {
    /**
     * 返回数据列表
     */
    List<User> findAllUsers();

    /**
     * 添加
     * @param User
     * @return
     */
    int insertUser(User User);

    /**
     * 修改
     * @param User
     * @return
     */
    int updUser(User User);

    /**
     * 删除
     * @param id
     * @return
     */
    int delUser(Integer id);
}

7、创建Mapper接口的映射文件

在resources目录下新建mapper目录,并在mapper目录下新建Mapper接口的映射文件UserMapper.xml,再进行映射文件的编写。

首先,定义映射文件与Mapper接口的对应关系。

比如在该示例中,需要将UserMapper.xml文件与对应的UserDao接口类之间的关系定义出来:

<mapper namespace="com.example.sp0217b.dao.UserDao">

然后,配置表结构和实体类的对应关系:

<resultMap type="com.example.sp0217b.entity.User" id="UserResult">
        <result property="id" column="id"></result>
        <result property="name" column="name"></result>
        <result property="password" column="password"></result>
    </resultMap>

最后,按照对应的接口方法,编写增、删、改、查方法的具体SQL语句,最终的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.sp0217b.dao.UserDao">
    <resultMap type="com.example.sp0217b.entity.User" id="UserResult">
        <result property="id" column="id"></result>
        <result property="name" column="name"></result>
        <result property="password" column="password"></result>
    </resultMap>
    <select id="findAllUsers" resultMap="UserResult">
        select id,name,password from tb_user order by id desc
    </select>
    <insert id="insertUser" parameterType="com.example.sp0217b.entity.User">
        insert into tb_user (id,name,password)
        values (#{id},#{name},#{password})
    </insert>
    <update id="updUser" parameterType="com.example.sp0217b.entity.User">
        update tb_user
        set
        name = #{name},password=#{password}
        where id=#{id}
    </update>
    <delete id="delUser" parameterType="int">
        delete from tb_user where id=#{id}
    </delete>
</mapper>

 

8、新建MyBatisController

为了对MyBatis进行功能测试,在controller包下新建MyBatisController类,并新增4个方法分别接收对于tb_user表的增、删、改、查请求,代码如下所示:

package com.example.sp0217b.controller;
import com.example.sp0217b.dao.UserDao;
import com.example.sp0217b.entity.User;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;

@RestController
public class MyBatisController {
    @Resource
    UserDao userDao;
    // 查询所有记录
    @GetMapping("/user/mybatis/queryAll")
    public List<User> queryAll(){
        return userDao.findAllUsers();
    }
    // 新增
    @GetMapping("/user/mybatis/insert")
    public Boolean insert(String name,String password){
        if(StringUtils.isEmpty(name) || StringUtils.isEmpty(password)){
            return false;
        }
        User user = new User();
        int id = (int) (Math.random()*1000000);
        // user.setId(id);
        user.setName(name+"-"+id);
        user.setPassword(password+"-"+id);
        System.out.println(id);
        return userDao.insertUser(user)>0;
    }
    // 修改
    @GetMapping("/user/mybatis/update")
    public Boolean update(Integer id, String name, String password){
        if(id==null || StringUtils.isEmpty(name)||StringUtils.isEmpty(password)){
            return false;
        }
        User user = new User();
        user.setId(id);
        user.setName(name);
        user.setPassword(password);
        return userDao.updUser(user)>0;
    }
    // 删除
    @GetMapping("user/mybatis/delete")
    public Boolean delete(Integer id){
        if(id==null || id <1){
            return false;
        }
        return userDao.delUser(id)>0;
    }
}

在上述步骤完成后,项目的代码目录就如图

 

 

 在编码完成后启动Spring Boot项目。在启动成功后打开浏览器,对以上四个功能进行验证

添加

http://localhost:8080/user/mybatis/insert?name=李沙发&password=234567

 

 

 

 修改

http://localhost:8080/user/mybatis/update?id=1&name=李沙发2&password=234567

 

 删除

 

http://localhost:8080/user/mybatis/delete?id=1

查询所有

http://localhost:8080/user/mybatis/queryAll

 

posted @ 2022-02-17 16:49  庞某人  阅读(491)  评论(0编辑  收藏  举报