写点什么

SpringBoot 整合 MyBatis 完整详细版

  • 2022 年 5 月 16 日
  • 本文字数:3208 字

    阅读完需:约 11 分钟

执行以下脚本在数据库中创建 tb_user 表。


CREATE TABLE tb_user (


id int(11) NOT NULL AUTO_INCREMENT,


name varchar(255) DEFAULT NULL,


username varchar(255) DEFAULT NULL,


password varchar(255) DEFAULT NULL,


PRIMARY KEY (id)


) ENGINE=InnoDB DEFAULT CHARSET=utf8;


编写代码




在项目中新建 4 个包,分别为 entity(放置持久化类)、controller(控制器)、mapper(定义数据访问接口的包)、service(业务逻辑处理类)。在 resources 目录下创建 mapper 文件夹。代码中有详细的注释,下面直接贴代码。

1、编写实体类

实体类 User.java,其代码如下(和数据库字段需要对应,继承分页公共类 MyEverpage)。


public class User extends MyEverpage {


private Integer id;


private String name;


private String username;


private String password;


public Integer getId() {


return id;


}


public void setId(Integer id) {


this.id = id;


}


public String getName() {


return name;


}


public void setName(String name) {


this.name = name;


}


public String getUsername() {


return username;


}


public void setUsername(String username) {


this.username = username;


}


public String getPassword() {


return password;


}


public void setPassword(String password) {


this.password = password;


}


}


分页查询参数公共类 MyEverpage.java,代码如下。


/**


  • 分页类

  • @author Administrator


*/


public class My 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 Everpage {


private int limit;


private int offset;


public int getLimit() {


return limit;


}


public void setLimit(int limit) {


this.limit = limit;


}


public int getOffset() {


return offset;


}


public void setOffset(int offset) {


this.offset = offset;


}


}

2、编写 xml 文件,SQL 查询

在 resources/mapper 文件夹下新建一个 UserMapper.xml 文件,编写查询语句,代码如下(这里的 xml 路径一定要和 application.properties 配置文件中的路径一致)。


<?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">


<!--


namespace 命名空间,作用就是对 sql 进行分类化管理,理解 sql 隔离


注意:使用 mapper 代理方法开发,namespace 有特殊重要的作用,namespace 等于 mapper 接口地址


-->


<mapper namespace="com.mcy.springbootmybatis.mapper.UserMapper">


<select id="findAll" resultType="User">


select * from tb_user


</select>


<select id="findByName" parameterType="User" resultType="User">


select * from tb_user where name=#{name}


</select>


<select id="findByUsernameLike" parameterType="User" resultType="User">


select * from tb_user where username like "%"#{username}"%"


</select>


<select id="findById" parameterType="User" resultType="User">


select * from tb_user where id = #{id}


</select>


<select id="find" parameterType="User" resultType="User">


select * from tb_user where 1=1


<if test="name != '' and name != null">


and name =#{name}


</if>


<if test="username != '' and username != null">


and username =#{username}


</if>


</select>


<select id="findByPageAll" parameterType="User" resultType="User">


select * from tb_user limit #{offset},#{limit}


</select>


<insert id="addSave" parameterType="User">


insert into tb_user values(null, #{name}, #{username}, #{password})


</insert>


<update id="update" parameterType="User">


update tb_user set name=#{name}, username=#{username}, password=#{password}


where id=#{id}


</update>


</mapper>

3、编写 Mapper 接口

UserMapper.java 接口,代码如下(需要添加 @Mapper 注解,方法名需要额 xml 中的 id 值对应)。


import com.mcy.springbootmybatis.entity.User;


import org.apache.ibatis.annotations.Mapper;


import java.util.List;


@Mapper


public interface UserMapper {


//查询所有,方法名需要和 UserMapper.xml 中的 id 对应


public List<User> findAll();


//根据姓名查询


public List<User> findByName(String name);


//根据用户名模糊查询


public List<User> findByUsernameLike(String username);


//根据 id 查询


public User findById(Integer id);


//多条件动态查询


public List<User> find(User user);


//分页查询


public List<User> findByPageAll(User user);


//新增


public void addSave(User user);


//修改


public void update(User user);


}

3、编写业务层类

UserService.java 业务层类。


import com.mcy.springbootmybatis.entity.User;


import com.mcy.springbootmybatis.mapper.UserMapper;


import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.stereotype.Service;


import java.util.List;


@Service


public class UserService {


@Autowired


private UserMapper userMapper;


//查询所有,方法名需要和 UserMapper.xml 中的 id 对应


public List<User> findAll(){


return userMapper.findAll();


};


//根据姓名查询


public List<User> findByName(String name){


return userMapper.findByName(name);


};


//根据用户名模糊查询


public List<User> findByUsernameLike(String username){


return userMapper.findByUsernameLike(username);


};


//根据 id 查询


public User findById(Integer id){


return userMapper.findById(id);


};


//多条件动态查询


public List<User> find(User user){


return userMapper.find(user);


};


//分页查询


public List<User> findByPageAll(User user){


return userMapper.findByPageAll(user);


};


//新增


public void addSave(User user){


userMapper.addSave(user);


};


//修改


public void update(User user){


userMapper.update(user);


};


}


测试应用



1、编写测试 Controller

访问控制器 UserController.java 类,代码如下。


import com.mcy.springbootmybatis.entity.User;


import com.mcy.springbootmybatis.service.UserService;


import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.web.bind.annotation.RequestMapping;


import org.springframework.web.bind.annotation.RestController;


import java.util.List;


@RestController


@RequestMapping("/user")


public class UserController {


@Autowired


private UserService userService;


//查询所有,方法名需要和 UserMapper.xml 中的 id 对应


@RequestMapping("/findAll")


public List<User> findAll(){


return userService.findAll();


};


//根据姓名查询


@RequestMapping("/findByName")


public List<User> findByName(String name){


return userService.findByName(name);


};


//根据用户名模糊查询


@RequestMapping("/findByUsernameLike")


public List<User> findByUsernameLike(String username){


return userService.findByUsernameLike(username);


};


//根据 id 查询用户对象


@RequestMapping("/findById")


public User findById(Integer id){


return userService.findById(id);


}


//多条件动态查询


@RequestMapping("/find")


public List<User> find(User user){


return userService.find(user);


};


//分页查询


@RequestMapping("/findByPageAll")


public List<User> findByPageAll(User user){


return userService.findByPageAll(user);


};


//新增


@RequestMapping("/addSave")


public String addSave(){


User user = new User();


user.setName("张三");


user.setUsername("admin");


user.setPassword("admin");


userService.addSave(user);


user.setName("李四");


user.setUsername("123456");


user.setPassword("123456");


userService.addSave(user);


user.setName("王五");


user.setUsername("user");


user.setPassword("123456");

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
SpringBoot整合MyBatis完整详细版_Java_爱好编程进阶_InfoQ写作社区