idea下springboot的mybatis plus基础操作

本文详细介绍了在Idea环境下,使用SpringBoot集成MyBatis Plus进行数据库操作的基础知识,包括实体类注解的使用,排除非标准字段的方法,以及各种查询条件的构建。同时,还涉及到了分页查询、更新和删除操作的实现,提供了相应的代码示例。
摘要由CSDN通过智能技术生成

常用注解
1、在实体类上能用 @TableName(“真实表名”) 来与实体类进行关联;
2、在实体中能用 @TableId 标注为id;
3、在实体中能用 @TableName(“真实列名”) 来与实体中变量一一对应;
在这里插入图片描述


排除非标字段的三种方式:

1、 增加transient作为修饰,但序列化不能用;
在这里插入图片描述
2、使用static修改,需要手动生成get,set方法;
在这里插入图片描述
3、增加注解 @TableField(exist=false)
在这里插入图片描述


插入操作

	@Test
    public void insert(){
   
        User user = new User();
        user.setName("刘国强");
        user.setAge(35);
        user.setManagerId(1087982257332887553L);
        user.setCreateTime(LocalDateTime.now());
        int count = userMapper.insert(user);
        System.out.println("影响记录数:" + count);

    }

查询操作,需求如下:

一、查询需求
1、名字中包含雨并且年龄小于40
name like ‘%雨%’ and age<40
2、名字中包含雨年并且龄大于等于20且小于等于40并且email不为空
name like ‘%雨%’ and age between 20 and 40 and email is not null
3、名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列
name like ‘王%’ or age>=25 order by age desc,id asc
4、创建日期为2019年2月14日并且直属上级为名字为王姓
date_format(create_time,’%Y-%m-%d’)=‘2019-02-14’ and manager_id in (select id from user where name like ‘王%’)
5、名字为王姓并且(年龄小于40或邮箱不为空)
name like ‘王%’ and (age<40 or email is not null)
6、名字为王姓或者(年龄小于40并且年龄大于20并且邮箱不为空)
name like ‘王%’ or (age<40 and age>20 and email is not null)
7、(年龄小于40或邮箱不为空)并且名字为王姓
(age<40 or email is not null) and name like ‘王%’
8、年龄为30、31、34、35
age in (30、31、34、35)
9、只返回满足条件的其中一条语句即可
limit 1
二、select中字段不全部出现的查询
10、名字中包含雨并且年龄小于40(需求1加强版)
第一种情况:select id,name
from user
where name like ‘%雨%’ and age<40
第二种情况:select id,name,age,email
from user
where name like ‘%雨%’ and age<40

代码如下:

	@Test
    public void selectById(){
   
        User user = userMapper.selectById("1087982257332887553");
        System.out.println(user);
    }

    @Test
    public void selectIds(){
   
        List<Long> ids = Arrays.asList(1087982257332887553L, 1088248166370832385L, 1088250446457389058L);
        List<User> users = userMapper.selectBatchIds(ids);
        users.forEach(System.out::println);
    }

    @Test
    public void selectByMap(){
   
        Map<String, Object> map = new HashMap<>();
        map.put("name", "王天风");//key为数据库中的列
        map.put("age", 25);
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }

    /**
     * 1、名字中包含雨并且年龄小于40
     * 	name like '%雨%' and age<40
     */
    @Test
    public void selectByWrapper1(){
   
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<User> queryWrapper1 = Wrappers.<User>query();
        queryWrapper.like("name", "雨").lt("age", 40);
        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    /**
     * 2、名字中包含雨年并且龄大于等于20且小于等于40并且email不为空
     * name like '%雨%' and age between 20 and 40 and email is not null
     */
    @Test
    public void selectByWrapper2(){
   
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<User> queryWrapper1 = Wrappers.<User>query();
        //queryWrapper.like("name", "雨").ge("age", 20).le("age", 40).isNotNull("email");
        queryWrapper.like("name", "雨").between("age",20,40).isNotNull("email");
        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    /**
     * 3、名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列
     *    name like '王%' or age>=25 order by age desc,id asc
     */
    @Test
    public void selectByWrapper3(){
   
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<User> queryWrapper1 = Wrappers.<User>query();
        queryWrapper.likeLeft("name","王").or().ge("age",25).orderByDesc("age").orderByAsc("id");
        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    /**
     * 4、创建日期为2019年2月14日并且直属上级为名字为王姓
     *       date_format(create_time,'%Y-%m-%d')='2019-02-14' and manager_id in (select id from user where name like '王%')
     */
    @Test
    public void selectByWrapper4(){
   
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2019-02-14")
                .inSql("manager_id","select id from user where name like '王%'");
        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    /**
     * 5、名字为王姓并且(年龄小于40或邮箱不为空)
     *     name like '王%' and (age<40 or email is not null)
     */
    @Test
    public void selectByWrappe5(){
   
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.likeRight("name", "王").and(t->t.lt("age",40).or().isNotNull("email"));
        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值