Mybatis基本的CRUD操作
1.创建测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestMp02 {
@Autowired
private UserMapper um;
//CRUD操作
}
2.实体类相关注解
@TableName(“user”)可以设置对象和表的映射
@TableId(type = IdType.AUTO)可以设置id的主键自增
@TableField(“name”) 可以设置对象的属性和表的字段进行映射
package com.sxt.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
/**
* @TableName("user") 注解作用:把对象和数据库的表进行映射
* @TableField("name") 注解作用:把对象属性和数据库表的字段进行映射
* @TableId(type = IdType.AUTO) 注解作用:用在主键上面,IdType.AUTO是让数据库主键自增
* value(和数据库主键映射,如果一样就可以省略)
*/
@TableName("user") //配置了全局配置策略就可以省略了
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField("name")
private String name;
private String password;
private int age;
//数据库中没有此字段 使用@TableField(exist = false)注解后查询时可以忽略此字段
@TableField(exist = false)
private String info;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(Integer id, String name, String password, int age) {
this.id = id;
this.name = name;
this.password = password;
this.age = age;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
3.添加操作
/**
* 添加操作
* 添加的时候会对对象判null 如果你是null,sql拼接的时候就不会插入null的字段
*/
@Test
public void insert(){
User user = new User();
//当没有id的时候 实体类的id要加上@TableId注解让id自增
// user.setId(2);
user.setPassword("1223");
// user.setAge(23);
user.setName("zgg");
int i = um.insert(user);
System.out.println("i = " + i);
}
4.修改操作
/**
* 修改操作
* 一定要有id
* 如果对象的值为null就不会修改
*/
@Test
public void update(){
User user = new User();
user.setId(6);
user.setPassword("1223");
user.setAge(23);
user.setName("xxxlu");
//根据id进行修改
int i = um.updateById(user);
System.out.println("i = " + i);
}
5.查询操作
/**
* 查询的操作
*/
@Test
public void query(){
//通过id查询 um.selectById(2);
// User user = um.selectById(2);
// System.out.println("user = " + user);
//查询所有 um.selectList(null);
// List<User> list = um.selectList(null);
// System.out.println("list = " + list);
//根据id批量查询 um.selectBatchIds(list);
// List<Integer> list = new ArrayList<>();
// list.add(1);
// list.add(2);
// list.add(3);
// List<User> list1 = um.selectBatchIds(list);
// System.out.println("list1 = " + list1);
//通过字段集合查询
Map<String,Object> map = new HashMap<>();
//map的key是数据库表的字段
map.put("age",23);
List<User> list2 = um.selectByMap(map);
System.out.println("list2 = " + list2);
}
6.删除操作
/**
* 删除操作
*/
@Test
public void delete(){
//根据id删除
// int i = um.deleteById(9);
// System.out.println("i = " + i);
//根据id批量删除 um.deleteBatchIds(list);
// List<Integer> list = new ArrayList<>();
// list.add(11);
// list.add(12);
// int i = um.deleteBatchIds(list);
// System.out.println("i = " + i);
//通过字段集合删除
Map<String,Object> map = new HashMap<>();
//map的key是数据库表的字段
map.put("password","123123");
int i = um.deleteByMap(map);
System.out.println("i = " + i);
}
7.获取自增的主键值
只要在实体类的id上设置了 @TableId(type = IdType.AUTO)就可以实现