SpringBoot、MyBatis-Plus、lombok.Data、mybatisplus.annotation.Table*
springboot官网文档 https://docs.spring.io/spring-boot/docs/current/reference/
1、navicat生成数据库脚本:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(0) NULL DEFAULT NULL,
`username` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`age` int(0) NULL DEFAULT NULL,
`tel` int(0) NULL DEFAULT NULL,
`create_time` timestamp(0) NULL DEFAULT NULL,
`update_time` timestamp(0) NULL DEFAULT NULL,
`version` int(0) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '张三', 18, 180, NULL, NULL, NULL);
INSERT INTO `user` VALUES (2, '李四', 20, 137, NULL, NULL, NULL);
INSERT INTO `user` VALUES (3, '王五', 22, 138, NULL, NULL, NULL);
SET FOREIGN_KEY_CHECKS = 1;
2、目录结构
3、pom依赖
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.meiyijia</groupId>
<artifactId>Shop</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Shop</name>
<description>Shop</description>
<properties>
<java.version>1.8</java.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-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--Mybatis-Plus 注意版本-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!--lombok支持快速开发-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.7.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
4、应用入口代码
package com.meiyijia;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.meiyijia.dao.mapper")
public class Shop {
public static void main(String[] args) {
SpringApplication.run(Shop.class,args);
}
}
5、Controller层代码
package com.meiyijia.controller;
import com.meiyijia.dao.UserTest;
import com.meiyijia.dao.mapper.UserTestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("api/v1/user")
public class TestMyController {
@Autowired
private UserTestMapper userTestMapper;
@GetMapping("list")
public List test(){
List<UserTest> list = userTestMapper.selectList(null);
for (UserTest userTest:list){
System.out.println(userTest.getUsername());
}
return list;
}
}
6、dao层代码
package com.meiyijia.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 用户测试类
*/
//指定数据库表名称 user
@TableName(value = "user")
@Data
public class UserTest {
/**
* 主键id 设置自增长策略
*/
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
/**
* 用户名称
*/
@TableField(value = "username")
private String username;
/**
* 年龄
*/
@TableField(value = "age")
private int age;
/**
* 电话
*/
@TableField(value = "tel")
private int tel;
/**
* 创建时间
*/
@TableField(value = "create_time")
private Date create_time;
/**
* 最后修改时间
*/
@TableField(value = "update_time")
private Date update_time;
/**
* 版本号(用于乐观锁,默认为1)
* @return
*/
//@Version
@TableField(value = "version")
private int version;
}
6.1 dao层mapper包下代码(继承BaseMapper,可以省略xml的编写)
package com.meiyijia.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.meiyijia.dao.UserTest;
/**
* 继承BaseMapper,可以省略xml的编写
*/
public interface UserTestMapper extends BaseMapper<UserTest> {
}
7、application.yml配置
server:
port: 8081
spring:
datasource:
#驱动程序类是“com.mysql.cj.jdbc.driver”。驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。
url: jdbc:mysql://localhost:3306/t_store?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: mysql密码
#控制台打印sql
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
8、运行
7.1访问地址:http://localhost:8081/api/v1/user/list
9、创建数据 TestMyController.java添加方法create()
@RequestMapping("demo")
public UserTest create(String userName,Integer userAge,Integer userTel) {
UserTest userTest1 = new UserTest();
userTest1.setCreate_time(new Date());
userTest1.setAge(userAge);
userTest1.setTel(userTel);
userTest1.setUsername(userName);
userTestMapper.insert(userTest1);
return userTest1;
}
前台访问
http://localhost:8081/api/v1/user/demo?userName=zhao&userAge=23&userTel=34567
删除一条数据
新增Service层接口与实现类
Service层接口UserService:
package com.meiyijia.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.meiyijia.dao.UserTest;
import java.util.List;
public interface UserService extends IService<UserTest> {
List<UserTest> likeListUser(String userName);
/**
* 删除方法
* @param id
* @return
*/
int deleteUser(int id);
}
UserService接口实现类
package com.meiyijia.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.meiyijia.dao.UserTest;
import com.meiyijia.dao.mapper.UserTestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserTestMapper userTestMapper;
/**
* 模糊查询用户信息
*
* @param userName
* @return
*/
@Override
public List<UserTest> likeListUser(String userName) {
//创建QueryWapper对象
QueryWrapper<UserTest> queryWapper = new QueryWrapper<>();
//构造查询条件
queryWapper
.select("username", "age")
.like("username", "age");
// 执行查询
List<UserTest> userTestList = userTestMapper.selectList(queryWapper);
return userTestList;
}
@Override
public int deleteUser(int id) {
int num = userTestMapper.deleteById(id);
return num;
}
@Override
public boolean saveBatch(Collection<UserTest> entityList, int batchSize) {
return false;
}
@Override
public boolean saveOrUpdateBatch(Collection<UserTest> entityList, int batchSize) {
return false;
}
@Override
public boolean updateBatchById(Collection<UserTest> entityList, int batchSize) {
return false;
}
@Override
public boolean saveOrUpdate(UserTest entity) {
return false;
}
@Override
public UserTest getOne(Wrapper<UserTest> queryWrapper, boolean throwEx) {
return null;
}
@Override
public Map<String, Object> getMap(Wrapper<UserTest> queryWrapper) {
return null;
}
@Override
public <V> V getObj(Wrapper<UserTest> queryWrapper, Function<? super Object, V> mapper) {
return null;
}
@Override
public BaseMapper<UserTest> getBaseMapper() {
return null;
}
@Override
public Class<UserTest> getEntityClass() {
return null;
}
}
UserController新增方法
@GetMapping("/delete")
public Integer deleteUserById(@RequestParam("userId") int user_id){
Integer num =userTestService.deleteUser(user_id);
return num;
}