学习目标:
使用mybatis plus 新增insert插入数据
学习内容:
插入一条新数据
学习产出:
1、数据准备
操作数据的话,需要连接数据库,在编辑器中右侧可以进行连接
输入账号密码和URL就可以了
连接成功显示
在springboot配置文件中,连接数据库
创建实体类
package com.example.demo.domain;
//lombok 简化实体类的包
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data // 生成get/set 方法
@AllArgsConstructor // 生成有参构造器
@NoArgsConstructor // 生成无参构造器
public class User {
private Integer id;
private String user;
private String pwd;
private String token;
private String role;
private String createtime;
}
创建接口,继承BaseMapper
package com.example.demo.Dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.domain.User;
import org.apache.ibatis.annotations.Mapper;
//接口继承BaseMapper<实体类> 这里封装了增删改查的方法
@Mapper
public interface UserDao extends BaseMapper<User> {
}
写个测试类,测试新增方法
package com.example.demo;
import com.example.demo.Dao.UserDao;
import com.example.demo.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Demo4ApplicationTests {
@Autowired
private UserDao userDao;
@Test
void insertSave(){
User user = new User();
user.setUser("testSave");
user.setPwd("111");
user.setToken("12312");
user.setRole("asdf");
user.setCreatetime("2022-1-1");
userDao.insert(user);
}
}
执行的话,会报错
org.mybatis.spring.MyBatisSystemException:
nested exception isorg.apache.ibatis.reflection.ReflectionException:
Could not set property 'id' of 'class com.example.demo.domain.User' with value
'1521666337871495170' Cause: java.lang.IllegalArgumentException: argument type mismatch
是因为这里没有指定ID的策略,这里默认的一种新增id的算法。
我们需要设置ID为自增策略。
方式1:在实体类中的id上写入@TableId(type = IdType.AUTO)
有个问题:就是每新增一个类的id都需要写入会很麻烦,所以不推荐使用这种方法
public class User {
@TableId(type = IdType.AUTO) // 设置id为自增的
private Integer id;
private String user;
private String pwd;
private String token;
private String role;
private String createtime;
}
有个问题:就是每新增一个类的id都需要写入会很麻烦,所以不推荐使用这种方法
可以在配置文件中,进行配置,所有的id都为自增策略+1的设置
mybatis-plus:
global-config:
db-config:
id-type: auto // 设置自增id,这样就不用在每个实体类中写@TableId了
这样就可以完成新增的操作了。