MyBatis-Plus中的CURD(含部分注解)

测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMyBatisSpringBoot {
    @Autowired
    private UserMapper userMapper;
}

插入操作

  • 测试类
  • 也可以使用有参构造
    @Test
    public void testInsert(){
        User user = new User();
        user.setAge(30);
        user.setMail("@qq.com");
        user.setUserName("ssc");
        user.setName("曹操");
        user.setPassword("123456");
        int count = this.userMapper.insert(user);
        System.out.println(count);
    }

注解

TableId 主键id的属性

@TableId(type = IdType.AUTO)
private Long id
  • IdType的五种类型默认是NONE
public enum IdType {
    AUTO(0),
    NONE(1),
    INPUT(2),
    ID_WORKER(3),
    UUID(4),
    ID_WORKER_STR(5);

    private final int key;

    private IdType(int key) {
        this.key = key;
    }

    public int getKey() {
        return this.key;
    }
}

TableField

指定数据库字段名
  • 指定数据库中的字段名,mail在数据库中没有对应的字段,可以用TableField(value = "email")指定
@TableField(value = "email")
private String mail;
表中不存在的字段
@TableField(exist = false)
private String address;
不查询某个字段
@TableField(select = false)
private String password;

更新操作

根据id更新

    @Test
    public void testUpdateById(){
        User user = new User();
        user.setId(1L);
        user.setAge(19);
        int i = this.userMapper.updateById(user);
        System.out.println("受影响条数:"+ i);
    }

根据条件更新

  • 使用实体类 QueryWrapper
@Test
public void testUpdateByCondition(){
    User user = new User();
    user.setAge(20);
    user.setPassword("888888");
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.eq("user_name","zhangsan"); // 匹配user_name = "zhangsan" 的条件
    int i = this.userMapper.update(user, wrapper);
    System.out.println("受影响条数:"+ i);
}
  • 不用实体类 UpdateWrapper
    @Test
    public void testUpdateByCondition1(){
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.set("age", 21).set("password","999999") // 更新的字段
                .eq("user_name","zhangsan"); // 更新的条件
        int i = this.userMapper.update(null, wrapper);
        System.out.println("受影响条数:"+ i);
    }

删除操作

根据id删除

    @Test
    public void testDeleteById(){
        int i = this.userMapper.deleteById(8);
        System.out.println("受影响条数:"+ i);
    }

根据columnMap条件,删除

    @Test
    public void testDeleteByMap(){
        Map<String ,Object> map = new HashMap<>();
        map.put("user_name","ssc");
        map.put("password","123456");
        int i = this.userMapper.deleteByMap(map);
        System.out.println("受影响条数:"+ i);
    }

根据entity条件,删除

  • 用法一
@Test
public void testDeleteByWrapper(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.eq("user_name","ssc").eq("password","123456");
    int i = this.userMapper.delete(wrapper);
    System.out.println("受影响条数:"+ i);
}
  • 用法二
    @Test
    public void testDeleteByWrapper(){
        User user = new User();
        user.setUserName("ssc1");
        user.setPassword("123456");
        QueryWrapper<User> wrapper = new QueryWrapper<>(user); // wraper根据user来包装自己的的参数
        int i = this.userMapper.delete(wrapper);
        System.out.println("受影响条数:"+ i);
    }

根据id,批量删除

    @Test
    public void testDeleteBatchId(){
        int i = this.userMapper.deleteBatchIds(Arrays.asList(8L,9L));
        System.out.println("受影响条数:"+ i);
    }
DELETE FROM tb_user WHERE id IN ( ? , ? )

查询操作

id查询

    @Test
    public void testSelectById(){
        User user = this.userMapper.selectById(1);
        System.out.println(user);
    }

查询全部

@Test
public void testFindAll(){
    List<User> users = this.userMapper.selectList(null);
    users.forEach(user -> System.out.println(user));
}

id批量查询

@Test
public void testSelectBatchId(){
    List<User> users = this.userMapper.selectBatchIds(Arrays.asList(1L, 2L));
    users.forEach(user -> System.out.println(user));
}

entity查询一条记录

  • 查询数据超过一条时会抛出异常

  • 用法一
    @Test
    public void testSelectByWrapper(){
        User user = new User();
        user.setUserName("zhangsan");
        user.setPassword("999999");
        QueryWrapper<User> wrapper = new QueryWrapper<>(user); // wraper根据user来包装自己的的参数
        User user1 = this.userMapper.selectOne(wrapper);
        System.out.println(user1);
    }
  • 用法二
    @Test
    public void testSelectByWrapper(){
        QueryWrapper<User> wrapper = new QueryWrapper<>(); // wraper根据user来包装自己的的参数
        wrapper.eq("user_name","zhangsan").eq("password","999999");
        User user1 = this.userMapper.selectOne(wrapper);
        System.out.println(user1);
    }
SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE user_name = ? AND password = ? 

根据wrapper条件,查询总记录条数

    @Test
    public void testSelectCount(){
        QueryWrapper<User> wrapper = new QueryWrapper<>(); // wraper根据user来包装自己的的参数
        wrapper.eq("password","123456").gt("age",20);
        Integer integer = this.userMapper.selectCount(wrapper);
        System.out.println(integer);
    }
SELECT COUNT( 1 ) FROM tb_user WHERE password = ? AND age > ? 

entity查询多条列表

    @Test
    public void testSelectAll(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 查询条件
        wrapper.like("email",".cn");
        List<User> users = this.userMapper.selectList(wrapper);
        users.forEach(user -> System.out.println(user));
    }
SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE email LIKE ? 

entity查询全部记录(并翻页)

  • 配置插件
    在这里插入图片描述
  • 测试类
    @Test
    public void testSelectPage(){
        Page<User> page = new Page<>(1,2); // 第一页 查询一条数据
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 查询条件
        wrapper.like("email",".cn");
        IPage<User> userIPage = this.userMapper.selectPage(page, wrapper);
        System.out.println(userIPage.getTotal());
        System.out.println(userIPage.getPages());
        System.out.println(userIPage.getCurrent());
        List<User> records = userIPage.getRecords();
        records.forEach(item -> System.out.println(item));
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值