内容:ORM介绍 Mybatis-Plus介绍 Mybatis-Plus CRUD操作
- ORM介绍
- Mybatis-Plus介绍
- 任务:查询所有用户
- 添加依赖
<!-- MyBatisPlus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!-- mysql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 数据连接池 druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
- 配置文件中加入数据库配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
- 创建数据库mydb并执行该sql
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50649
Source Host : localhost:3306
Source Schema : mydb
Target Server Type : MySQL
Target Server Version : 50649
File Encoding : 65001
Date: 31/03/2023 16:52:03
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`birthday` time(6) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'ljh', '123', '16:30:54.000000');
INSERT INTO `user` VALUES (2, 'yxy', '222', '16:31:09.000000');
SET FOREIGN_KEY_CHECKS = 1;
- 创建实体类uesr
package com.example.mdpdemo.entity;
public class User {
private int id;
private String username;
private String password;
private String birthday;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", birthday='" + birthday + '\'' +
'}';
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getBirthday() {
return birthday;
}
}
-
在根目录下创建mapper包
-
在启动类中添加一个包扫描:@MapperScan(“com.example.mdpdemo.mapper”)
@SpringBootApplication
@MapperScan("com.example.mdpdemo.mapper")
public class MdpdemoApplication {
public static void main(String[] args) {
SpringApplication.run(MdpdemoApplication.class, args);
}
}
- 加入swagger:加入方法见本专栏
- 创建mapper接口
//定义mapper注解让其扫描
@Mapper
public interface UserMapper {
//查询所有用户,通过 @Select去数据库里查询所有用户并封装进list中
@Select("select * from user")
public List<User> find();
}
- 控制类
@RestController
public class UserController {
//注入UserMapper,spring自动将mapper装配好了
@Autowired
private UserMapper userMapper;
@ApiOperation("查询用户")
@GetMapping("/user")
public String query(){
//实体类都在IOC容器中
List<User> users = userMapper.find();
System.out.println(users);
return "查询用户";
}
@GetMapping("/in")
public String in(){
return "in";
}
}
-
用swagger测试接口
-
查询结果
- 以json格式给前端,将返回值转为List就自动装配为json了
@ApiOperation("查询用户")
@GetMapping("/user")
public List query(){
//实体类都在IOC容器中
//使用List可以直接将获取到的数据转为json格式给前端用
List<User> users = userMapper.find();
System.out.println(users);
return users;
}
- 测试结果:
- 任务:增加一个用户,并展示给前端
- 先在mapper中编写sql语句,注意:增加用户返回值为影响的行数
//增加一个用户
@Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
public int addUser(User user);
//根据名字查询一个用户
@Select("select * from user where username = #{username}")
public User selectOne(String username);
- 在控制层编写代码,注意用post
@PostMapping("/user1")
//需要一个user对象,并且会返回一个user对象
public User save(User user){
//前端自动装配成类
int i = userMapper.addUser(user);
if (i!=0) {
System.out.println("插入成功");
return userMapper.selectOne("lhp");
}
return null;
}
运行结果:
用mybatisplus进行改造
- 官网
- 直接在mapper中继承一个basemapper,并且给他一个泛型,他就可以根据这个泛型找到数据库中相应的表,注意名字一致
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
- 控制层:插入一个用户并通过map的方式查询并展示给前端
@PostMapping("/user1")
public List<User> save(User user){
//前端自动装配成类
//用plus增加一个用户
int i = userMapper.insert(user);
if (i!=0) {
System.out.println("插入成功");
//用plus框架根据id查询
HashMap<String, Object> map = new HashMap<>();
map.put("username","lhp");
return userMapper.selectByMap(map);
}
return null;
}