Mybatis-Plus实现简单的增删改查 实体类上的注解(二)

简介: Mybatis-Plus实现简单的增删改查 实体类上的注解(二)

2.3 改(update)

根据主键id修改(updateById)


@Test 
public void updateByIdTest() {
    User user = new User();
    user.setId(4L);
    user.setName("张三");
    user.setAge(20);
    // UPDATE user SET name=?, age=? WHERE id=?
    int result = mapper.updateById(user);
    System.out.println("受影响的行数: " + result); 
}


2.4 查(select)

根据主键id查找一条记录(selectById)


@Test public void selectTest() {
    // SELECT id,name,age,email FROM user WHERE id=?
    User user = mapper.selectById(4L);
    System.out.println("查询结果为:" + user); 
}


根据主键id查找多条记录(selectBatchIds)


@Test 
public void selectByBatchIdsTest() {
   List<Long> list = Arrays.asList(4L, 5L);
   // SELECT id,name,age,email FROM user WHERE id IN ( ? , ? )
   List<User> users = mapper.selectBatchIds(list);
   System.out.print("查询结果为:");
   users.forEach(System.out::println); 
}


多条件查询(selectByMap)


@Test 
public void selectByMapTest() {
    HashMap<String, Object> map = new HashMap<>();
    map.put("name", "张三");
    map.put("age", 20);
    // SELECT id,name,age,email FROM user WHERE name = ? AND age = ?
    List<User> users = mapper.selectByMap(map);
    System.out.print("查询结果为:");
    users.forEach(System.out::println); 
}


查询表中所有的记录(selectList)


@Test 
public void selectListTest() {
    // SELECT id,name,age,email FROM user
    List<User> users = mapper.selectList(null);
    users.forEach(System.out::println); 
}


mapper层增删改查方法中的小知识点


⚠ 所有的增删改方法返回值都是受影响的行(记录)数

⚠ 以上都是单表的简单增删改查操作,如果这些功能无法满足你的需求,可以自定义SQL。可以在默认的路径(resources文件夹下的mapper文件夹)下创建mapper映射文件,或者在别的地方创建映射文件使用配置文件指定(mybatis-plus.mapper-locations),其他的操作和mybatis一样(接口方法、映射文件、调用方法)


3 service层的CRUD方法

 service层接口继承IService接口并传入需要操作的实体类泛型


public interface UserService extends IService<User> {
}


 service接口的实现类除了实现接口之外,还要继承ServiceImpl类并传入传泛型(mapper层接口,实体类),这样做的好处是还可以在实现类里实现自定义业务方法


@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}


3.1 批量添加或者更新

批量添加saveBatch



@Test
public void saveBatchTest() {
    // INSERT INTO user ( id, name, age ) VALUES ( ?, ?, ? )
    List<User> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        User user = new User();
        user.setName("tom" + i);
        user.setAge(20 + i);
        list.add(user);
    }
    boolean b = userService.saveBatch(list);
    System.out.println(b);
}


批量添加或者更新saveOrUpdateBatch

 第二个方法既可以用于批量添加还可以皮力量更新,判断是批量添加还是更新的依据是:看传入的列表中实体类对象是否设置了id属性或者说这个id值在表中是否存在,如果设置了id且id在表中存在的话就是批量更新,如果不设置id属性或者表中没有这个字段值的话就是批量添加。简而言之,有则改无则添


// 批量修改(因为user对象设置的id属性在表中存在)
@Test
public void saveOrUpdateBatchTest() {
    // UPDATE user SET name=?, age=? WHERE id=?
    List<User> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        User user = new User();
        user.setId(10L + i);
        user.setName("jack" + i);
        user.setAge(20 + i);
        list.add(user);
    }
    boolean b = userService.saveOrUpdateBatch(list);
    System.out.println(b);
}


3.2 查询表中总记录数

@Test
public void getCountTest() {
    // SELECT COUNT( * ) FROM user
    long count = userService.count();
    System.out.println(count);
}


相关文章
|
2月前
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
15 1
|
2月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
27 0
|
1月前
|
SQL XML Java
【mybatis】第二篇:@Select注解中加入字段判断
【mybatis】第二篇:@Select注解中加入字段判断
|
2天前
|
SQL Java 数据库连接
【mybatis】动态sql之批量增删改查
【mybatis】动态sql之批量增删改查
5 0
|
14天前
|
Java 数据库连接 数据库
spring+mybatis_编写一个简单的增删改查接口
spring+mybatis_编写一个简单的增删改查接口
16 2
|
1月前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
2月前
|
Java 数据库连接 mybatis
mybatis plus字段为null或空字符串把原来的数据也更新了,只需要注解
mybatis plus字段为null或空字符串把原来的数据也更新了,只需要注解
24 0
|
2月前
|
Java 数据库连接 网络安全
mybatis使用全注解的方式案例(包含一对多关系映射)
mybatis使用全注解的方式案例(包含一对多关系映射)
12 0
|
2月前
ssm(Spring+Spring mvc+mybatis)实体类——Dept
ssm(Spring+Spring mvc+mybatis)实体类——Dept
15 0
|
2月前
|
关系型数据库 Java 数据库连接
如何利用Mybatis-Plus自动生成代码(超详细注解)
如何利用Mybatis-Plus自动生成代码(超详细注解)
35 1