day 01 mp

【1】MybatisPlus概述

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生(提供了快速使用mybatis的方式)。

【2】MP操作

mp单表的增删改
定义对应的mapper接口继承BaseMapper<泛型是表对应的实体类>
BaseMapper中提供了相应的增删改的方法
增:
int insert(T entity) 参数传入实体类对象 返回值是被影响行数
删:
根据id删除:
int deleteById(args) 参数是主键值 返回值是被影响行数
根据id集合批量删除:
int deleteBatchIds(lists) 参数是主键值构成的集合 返回值是被影响行数
根据map构造条件,删除:
int deleteByMap(map)
参数是主键值构成的集合 返回值是被影响行数
集合中 key为 字段名 value 为值 put进去
根据entity条件,删除
int delete(wrapper) wrapper相当于sql语句中where后面的条件 写清楚 放到对象中
改:
int updateById(entity) 参数传入实体类对象 返回值是被影响行数 相当于是传入了一个新对象但是只对相应的字段值做更新
int update(entity,wrapper) wrapper相当于sql语句中where后面的条件 写清楚 放到对象中
更新传入对象的相应字段值

练习题

@SpringBootTest
public class MPTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testQueryUesrById() {

        User user = userMapper.selectById(2L);
        System.out.println("user = " + user);
    }

    /*
     * 要求:添加名为小明的user数据
     * sql语句:insert into tb_user(xx,xx,xx,...) values (xx,xx,xx,....)
     * */
    @Test
    public void testAddUesrById() {

        User user = new User();
        user.setUserName("小王aB");
        user.setAge(989);
        user.setPassword("1234");

        int result = userMapper.insert(user);
        System.out.println("result = " + result);


    }

    /*
     * 要求:删除id为 16 的用户
     * sql语句:DELETE FROM tb_user WHERE id=?
     * */
    @Test
    public void testDelUesrById() {
        int result = userMapper.deleteById(19L);
        System.out.println("result = " + result);
    }

    /*
     * 要求:删除id为 15、14 的用户
     * sql语句:DELETE FROM tb_user WHERE id=? or id=?
     * sql语句:DELETE FROM tb_user WHERE id IN ( ? , ? )
     * */
    @Test
    public void testDelUesrByIds() {
        List<Long> ids = Arrays.asList(20L, 21L,22L);
        int result = userMapper.deleteBatchIds(ids);
        System.out.println("result = " + result);
    }

    /*
     * 要求:删除user_name为王八衰 age 为22 的用户
     * sql语句:DELETE FROM tb_user WHERE user_name = ? AND age = ?
     * */


    @Test
    public void testDelUesrByCondition() {

        HashMap<String, Object> map = new HashMap<>();
        map.put("user_name", "王八衰");
        map.put("age", "22");

        int result = userMapper.deleteByMap(map);
        System.out.println("result = " + result);
    }

    /*
     * 修改用户id为 4 的username修改为 李催
     * sql语句:UPDATE tb_user SET user_name=? WHERE id=?
     */
    @Test
    public void testUpdate(){

        User user = User.builder().id(4L)
                .userName("李催")
                .build();

        int i = userMapper.updateById(user);
        System.out.println("i = " + i);

    }

    /*
     * 要求:分页查询user数据,每页5条数据,查询第一页数据
     * sql语句:SELECT * FROM tb_user LIMIT 0,5
     * sql语句:SELECT * FROM tb_user LIMIT 5 (简写形式)
     */
    @Test
    public void testPage(){

        Page<User> page = new Page<>(1,5);


        Page<User> userPage = userMapper.selectPage(page, null);
        List<User> records = userPage.getRecords();
        System.out.println("records = " + records);
        long total = userPage.getTotal();

        System.out.println("total = " + total);


    }


    /*
     * 要求:查询用户中姓名包含"伤",密码为"123456",且年龄为19或者25或者29,查询结果按照年龄降序排序;
     * sql语句:SELECT * FROM tb_user WHERE (user_name LIKE ? AND password = ? AND age IN (?,?,?)) ORDER BY age DESC
     */
    @Test
    public void testConditions1Query(){

        //QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //queryWrapper.like("user_name", "伤");
        //queryWrapper.eq("password", "123456");
        //queryWrapper.in("age", 19, 25, 29);
        //queryWrapper.orderByDesc("age");


        //lambda表达式的形式,更加解耦
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(User::getUserName, "伤");
        queryWrapper.eq(User::getPassword, "123456");
        queryWrapper.in(User::getAge, 19, 25, 29);
        queryWrapper.orderByDesc(User::getAge);

        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println("users = " + users);


    }


    /*
     * 要求:查询用户中姓名包含"伤",密码为"123456",且年龄为19或者25或者29,查询结果按照年龄降序排序;
     * sql语句:SELECT user_name,age FROM tb_user WHERE (user_name LIKE ? AND password = ? AND age IN (?,?,?)) ORDER BY age DESC
     */
    @Test
    public void testConditions2Query(){


        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(User::getUserName, "伤");
        queryWrapper.eq(User::getPassword, "123456");
        queryWrapper.in(User::getAge, 19, 25, 29);
        queryWrapper.orderByDesc(User::getAge);

        queryWrapper.select(User::getUserName, User::getAge);

        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println("users = " + users);

    }

    /*
     * 要求:查询用户密码为"123456"的数据,并且要求每页显示5条,查询第二页的数据;
     * sql语句:SELECT user_name,age FROM tb_user WHERE limit 5,5
     */
    @Test
    public void testConditionsPageQuery(){

        Page<User> page = new Page<>(2, 5);

        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getPassword, "123456");
        queryWrapper.orderByDesc(User::getAge);


        Page<User> pageResult = userMapper.selectPage(page, queryWrapper);
        System.out.println("pageResult = " + pageResult);


        List<User> records = pageResult.getRecords();
        System.out.println("records = " + records);
        long total = pageResult.getTotal();
        System.out.println("total = " + total);

    }


    /*
     * 要求:查询用户密码为"123456",或者 age 为 20、21、22,并且要求每页显示5条,查询第二页的数据;
     * sql语句:SELECT user_name,age FROM tb_user WHERE  password = ? or age IN (?,?,?)
     */
    @Test
    public void testConditionsOrQuery(){


        Page<User> page = new Page<>(2, 5);

        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getPassword, "123456")
                .or()
                .in(User::getAge, 19, 25, 29)
                .select(User::getUserName, User::getAge);

        Page<User> pageResult = userMapper.selectPage(page, queryWrapper);
    }

    @Autowired
    private UserService userService;

    @Test
    public void two() {

        Page<User> page = new Page<>(2, 5);

        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getPassword, "123456")
                .or()
                .in(User::getAge, 19, 25, 29)
                .select(User::getUserName, User::getAge);

        Page<User> pageResult = userService.page(page, queryWrapper);

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值