Java-SpringBoot集成Mybaties-Plus增删改查
一,前言
相较于Mybaties而言Mybaties-Plus进行了增强,它封装了基本的增删改查操作,使我们不需要自己再去编写很多重复的代码,大大解放了生产力。
二,创建项目
创建成功后删除src下的test目录。
目录结构
四,pom.xml
修改pom.xml内容,如下代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.llh</groupId>
<artifactId>spring-boot-demo</artifactId>
<version>1.0.0</version>
<name>spring-boot-demo</name>
<description>springboot project description</description>
<properties>
<mybatis-spring-boot.version>2.1.4</mybatis-spring-boot.version>
<mybatis-plus.version>3.4.2</mybatis-plus.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
</dependencies>
</project>
说明:
spring-boot-starter-parent帮我们做了SpringBoot相关依赖包的版本管理,所以有些依赖包不需要我们自己去写。但像mybaties-plus-boot-starter他是不属于spring-boot相关的,parent中没有做版本号管理,所以还需要手动写一下。
五,sqlapplication.properties
5.1导入sql语句
说明:创建一个数据库,然后运行sql语句,生成表,以下例子就用以下四个字段
1.id 用户的id自增主键
2.username用户名
3.password密码
4.creat_time创建时间
5.2修改application.properties配置文件
# 应用名称
spring.application.name=spring-boot-demo
server.port=8888
# 数据库相关
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username=root
spring.datasource.password=0320
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mybatis相关
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
说明:
1.数据库地址 localhost:3306/demo, demo就是数据库名称
2.数据库用户名 spring.datasource.username
3.数据库密码 spring.datasource.password
4.mybatis.mapper-locations 配置扫码xml文件
六,逻辑代码
SpringBootDemoApplication类
package com.llh.springbootdemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author llh
*/
@SpringBootApplication
@MapperScan(value = "com.llh.springbootdemo.mapper")
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
说明:启动类加上
@MapperScan(value = "com.llh.springbootdemo.mapper")
UserInfo类
package com.llh.springbootdemo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
/**
* @author llh
*/
public class UserInfo {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String username;
private String password;
private LocalDateTime createTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
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;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return "UserInfo{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", createTime=" + createTime +
'}';
}
}
说明:这里类成员变量和数据库字段对应,Mybatis自动做了驼峰法到下划线的转换
如:数据库 create_time -> 类变量 createTime
UserInfoMapper类
package com.llh.springbootdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.llh.springbootdemo.entity.UserInfo;
/**
* @author llh
*/
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}
说明:BaseMapper 类封装了dao层基本的增删改查操作。
mapper/UserInfoMapper.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.llh.springbootdemo.mapper.UserInfoMapper">
</mapper>
说明:这里的namespace和上述的UserInfoMapper路径对应一致。
UserInfoService类
package com.llh.springbootdemo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.llh.springbootdemo.entity.UserInfo;
/**
* @author llh
*/
public interface UserInfoService extends IService<UserInfo> {
}
说明:这里IService封装了service层基本的增删改查
UserInfoServiceImpl 类
package com.llh.springbootdemo.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.llh.springbootdemo.entity.UserInfo;
import com.llh.springbootdemo.mapper.UserInfoMapper;
import com.llh.springbootdemo.service.UserInfoService;
import org.springframework.stereotype.Service;
/**
* @author llh
*/
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
}
UserInfoController 类
package com.llh.springbootdemo.controller;
import com.llh.springbootdemo.entity.UserInfo;
import com.llh.springbootdemo.service.UserInfoService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author llh
*/
@RestController
@RequestMapping("/userInfo")
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@PostMapping("/add")
public Boolean add(@RequestBody UserInfo userInfo) {
userInfo.setCreateTime(LocalDateTime.now());
return userInfoService.save(userInfo);
}
@GetMapping("/delete/{id}")
public Boolean delete(@PathVariable Long id) {
return userInfoService.removeById(id);
}
@PostMapping("/update")
public Boolean update(@RequestBody UserInfo userInfo) {
return userInfoService.updateById(userInfo);
}
@GetMapping("/get/{id}")
public UserInfo get(@PathVariable Long id) {
return userInfoService.getById(id);
}
@GetMapping("/list")
public List<UserInfo> list() {
return userInfoService.list();
}
}