前言
上篇文章介绍了springboot整合JPA,点击查看springboot整合JPA,使用起来非常的方便,但是针对于现在市面上大多数的项目,使用的还是基础的mybatis进行数据库的增删改查。
下面介绍springboot使用mybatis操作mysql数据库。
创建数据库
首先 我们创建一张表
/*
Navicat Premium Data Transfer
Source Server : localhost
Source Server Type : MySQL
Source Server Version : 50721
Source Host : localhost:3306
Source Schema : learn-springboot
Target Server Type : MySQL
Target Server Version : 50721
File Encoding : 65001
Date: 14/05/2022 10:41:17
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` bigint(20) NOT NULL,
`user_name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',
`user_password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
后台
创建项目,在pom文件添加依赖
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
在resources文件夹下新建mybatis文件夹,新建mybatis的配置文件
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer"/>
<typeAlias alias="Long" type="java.lang.Long"/>
<typeAlias alias="HashMap" type="java.util.HashMap"/>
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
<typeAlias alias="ArrayList" type="java.util.ArrayList"/>
<typeAlias alias="LinkedList" type="java.util.LinkedList"/>
</typeAliases>
</configuration>
application配置文件添加mybatis和mysql配置
server.port=8081
# mysql
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/learn-springboot?characterEncoding=utf8&useSSL=false
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=123456
# 检查 mybatis 配置是否存在,一般命名为 mybatis-config.xml
mybatis.check-config-location =true
# 配置文件位置
mybatis.config-location=classpath:mybatis/mybatis-config.xml
# mapper xml 文件地址
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
# 日志级别
logging.level.com.world.lzh.dao=DEBUG
目录结构
controller
package com.world.lzh.controller;
import com.world.lzh.entity.User;
import com.world.lzh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author lzh
* @Date 2022/5/14 - 10:48
* @Description
* @Version 1.0.0
**/
@RestController
@RequestMapping("/api")
public class IndexController {
@Autowired
private UserService userService;
@PostMapping("/selectUser")
public List<User> selectUser(@RequestBody User user) {
return userService.selectUser(user);
}
@PostMapping("/insertUser")
public String insertUser(@RequestBody User user) {
return userService.insertUser(user);
}
@PostMapping("/updateUser")
public String updateUser(@RequestBody User user) {
return userService.updateUser(user);
}
}
entity实体
package com.world.lzh.entity;
import lombok.Data;
/**
* @Author lzh
* @Date 2022/5/14 - 10:48
* @Description
* @Version 1.0.0
**/
@Data
public class User {
private Long id;
private String userName;
private String userPassword;
}
service层
package com.world.lzh.service;
import com.world.lzh.dao.UserDao;
import com.world.lzh.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author lzh
* @Date 2022/5/14 - 10:49
* @Description
* @Version 1.0.0
**/
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> selectUser(User user) {
List<User> userList = userDao.selectUser(user);
return userList;
}
public String insertUser(User user) {
int result = userDao.insertUser(user);
return result > 0 ? "添加成功" : "添加失败";
}
public String updateUser(User user) {
int result = userDao.updateUser(user);
return result > 0 ? "修改成功" : "修改失败";
}
}
dao层(不要忘记@Mapper注解)
package com.world.lzh.dao;
import com.world.lzh.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Author lzh
* @Date 2022/5/14 - 10:48
* @Description
* @Version 1.0.0
**/
@Mapper
public interface UserDao {
List<User> selectUser(User user);
int updateUser(User user);
int insertUser(User user);
}
xml层(写sql)
<?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.world.lzh.dao.UserDao">
<insert id="insertUser">
insert into test
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="userName != null and userName != ''">
user_name,
</if>
<if test="userPassword != null and userPassword != ''">
user_password,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id},
</if>
<if test="userName != null and userName != ''">
#{userName},
</if>
<if test="userPassword != null and userPassword != ''">
#{userPassword},
</if>
</trim>
</insert>
<update id="updateUser">
UPDATE
test
<set>
<if test="userName != null and userName != ''">
user_name = #{userName},
</if>
<if test="userPassword != null and userPassword != ''">
user_password = #{userPassword},
</if>
</set>
WHERE
id = #{id}
</update>
<select id="selectUser" resultType="com.world.lzh.entity.User">
SELECT
id,
user_name userName,
user_password userPassword
FROM
test
where
1 = 1
<if test="id != null">
and id = #{id}
</if>
<if test="userName != null and userName != ''">
and user_name like concat('%',#{userName},'%')
</if>
</select>
</mapper>
接口测试
添加接口
修改
查询
到此,集成mybatis就结束了,集成的过程还是挺简单的,使用起来也比较方便🤨
源码地址:点击访问欢迎评论star⭐
36