MyBatis_plus实现简单查询与条件查询

1)通过id进行批量查询

测试demo:
 @Test
    public void test04() {
        List<User> userList = userMapper.selectBatchIds(Arrays.asList("1388048014324580354", "1392340666326999041"));
        userList.forEach(System.out::println);
    }
sql执行结果:
==>  Preparing: SELECT id,name,age,email,create_time,update_time,version FROM user WHERE id IN ( ? , ? ) 
==> Parameters: 1388048014324580354(String), 1392340666326999041(String)
<==    Columns: id, name, age, email, create_time, update_time, version
<==        Row: 1388048014324580354, 赵老师, 18, 1961871256@qq.com, 2021-04-30 16:30:09, 2021-04-30 16:34:15, 1
<==        Row: 1392340666326999041, 刘老师, 18, 1961871256@qq.com, 2021-05-12 12:47:37, 2021-05-12 12:47:37, 0
<==      Total: 2

2)通过map进行简单条件查询

测试demo:
@Test
    public void test05() {
        Map<String, Object> map = new HashMap<>();
        map.put("name", "赵老师");
        map.put("age", "18");
        List<User> user = userMapper.selectByMap(map);
        System.out.println(user);
    }
sql执行结果:
==>  Preparing: SELECT id,name,age,email,create_time,update_time,version FROM user WHERE name = ? AND age = ? 
==> Parameters: 赵老师(String), 18(String)
<==    Columns: id, name, age, email, create_time, update_time, version
<==        Row: 1388048014324580354, 赵老师, 18, 1961871256@qq.com, 2021-04-30 16:30:09, 2021-04-30 16:34:15, 1
<==      Total: 1

3)分页查询

增加配置类:
 /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
测试demo:
 @Test
    public void Test06() {
        //1 创建Page对象,向Page对象传递两个参数:当前页和每页记录数
        Page<User> page = new Page<>(2, 1);
        //2 调用mp的分页方法
        //分页所有数据封装到page对象中
        page = userMapper.selectPage(page, null);
        //3 从page对象获取分页数据
        long current = page.getCurrent(); //当前页
        long pages = page.getPages(); //总页数
        long size = page.getSize(); //每页显示记录数
        List<User> records = page.getRecords(); //数据集合
        long total = page.getTotal(); //总记录数
        boolean hasPrevious = page.hasPrevious(); //上一页
        boolean hasNext = page.hasNext();  //下一页
    }
}
sql执行结果:
==>  Preparing: SELECT id,name,age,email,create_time,update_time,version FROM user LIMIT ?,? 
==> Parameters: 1(Long), 1(Long)
<==    Columns: id, name, age, email, create_time, update_time, version
<==        Row: 1392340666326999041, 刘老师, 18, 1961871256@qq.com, 2021-05-12 12:47:37, 2021-05-12 12:47:37, 0
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@359b650b]
2
2
1
[User(id=1392340666326999041, name=刘老师, age=18, email=1961871256@qq.com, createTime=Wed May 12 12:47:37 GMT+08:00 2021, updateTime=Wed May 12 12:47:37 GMT+08:00 2021, version=0)]
2
true
false

4)条件查询

ge gt le lt: >= > <= <

        QueryWrapper<User> wrapper=new QueryWrapper<>();
        wrapper.ge("age", 20);
        List<User> list = userMapper.selectList(wrapper);
        list.forEach(System.out::println);
SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND (age >= ?)

betwween not between

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.between("age", 19, 25);
        List<User> list = userMapper.selectList(wrapper);
SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND (age BETWEEN ? AND ?) 

like

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.like("name","卜");
        List<User> list = userMapper.selectList(wrapper);
==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND (name LIKE ?) 
==> Parameters: %%(String)

eq ne: = !=

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("name","卜老师");
        List<User> list = userMapper.selectList(wrapper);
 SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND (name = ?) 

查询具体的列

  QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.select("name","age");
        List<User> list = userMapper.selectList(wrapper);
SELECT name,age FROM user WHERE deleted=0 

orderByDesc orderByAsc : 排序

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.orderByDesc("age");
        List<User> list = userMapper.selectList(wrapper);
SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 ORDER BY age DESC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 MyBatis Plus 中,可以使用 `join` 子句在两张或多张表之间进行联表查询。 假设你想要在用户表和订单表之间进行联表查询,可以使用如下 SQL 语句: ``` SELECT * FROM users u JOIN orders o ON u.id = o.user_id ``` 要在 MyBatis Plus 中执行此查询,需要创建一个查询方法,并使用 `@Select` 注解将其映射到相应的 SQL 语句。 下面是一个示例: ```java @Mapper public interface OrderMapper { @Select("SELECT * FROM users u JOIN orders o ON u.id = o.user_id") List<Map<String, Object>> selectUsersAndOrders(); } ``` 上述代码将返回一个包含用户和订单信息的列表。你也可以使用自定义的实体类来映射结果,而不是使用 `Map`。 在 MyBatis Plus 中,你还可以使用 `@Results` 和 `@Result` 注解来映射查询结果到实体类的属性,以及使用 `@One` 和 `@Many` 注解进行一对一或一对多的关联映射。 希望这对你有帮助。 ### 回答2: Mybatis-Plus是一个基于Mybatis的增强工具,它提供了很多方便的功能,使得在使用Mybatis进行数据库操作时更加简单和高效。使用Mybatis-Plus实现联表查询可以按照以下步骤进行: 首先,需要根据需要创建对应的实体类,并使用注解@Table来指定对应的数据库表名。在实体类中可以使用注解@JoinColumn来指定关联字段。 例如:假设有两个实体类User和Order,User和Order是通过UserId关联的,可以使用注解@JoinColumn(name="UserId")来指定关联字段。 接下来,在mapper接口中,使用@Mapper注解标注接口,并添加对应的方法用于联表查询。可以使用注解@SelectProvider来自定义SQL语句,也可以使用@Query注解来直接编写SQL语句。 例如:假设要查询用户信息以及用户的订单信息,可以在mapper接口中添加如下方法: @Select("SELECT u.*, o.* FROM user u LEFT JOIN order o ON u.id = o.user_id WHERE u.id = #{id}") List<UserOrderDto> getUserOrderList(@Param("id") Long id); 然后,在Service层中调用mapper接口中的方法来进行联表查询。可以直接调用mapper接口中的方法,也可以使用@AutoWired注解将mapper接口注入到Service中进行调用。 最后,在Controller层中,调用Service层中的方法获取联表查询的结果,并将结果返回给前端。 以上就是使用Mybatis-Plus实现联表查询的基本步骤。通过使用Mybatis-Plus,我们可以更加简单、高效地实现复杂的联表查询操作。 ### 回答3: MyBatis-Plus 是一个基于 MyBatis 的增强工具,它提供了许多便捷的功能,其中包括实现联表查询。 要使用 MyBatis-Plus 实现联表查询,我们需要按照以下步骤进行操作: 1. 创建实体类: 首先,我们需要创建对应的实体类,分别对应数据库中的每个表。每个类需要使用 `@TableName` 注解来指定对应的数据库表名,并使用 `@TableField` 注解指定实体类属性与数据库字段的映射关系。 2. 创建Mapper接口: 接下来,我们需要创建一个继承自 Mapper 接口的自定义接口。在自定义接口中,我们可以定义多个用于联表查询的方法,并使用 MyBatis-Plus 提供的注解进行配置。 3. 实现联表查询: 在自定义接口中,我们可以使用 MyBatis-Plus 的注解来配置联表查询操作。比如,我们可以使用 `@TableId`、`@TableField`、`@Query`、`@Join` 等注解来实现多表关联查询操作。 其中,`@Join` 注解用于指定多表关联查询条件,`@Query` 注解用于编写 SQL 查询语句。 4. 调用联表查询方法: 最后,我们可以在业务逻辑层的具体方法中调用实现好的联表查询方法。通过调用方法即可得到联表查询结果。 通过以上步骤,我们可以轻松地使用 MyBatis-Plus 实现联表查询MyBatis-Plus 提供了一系列强大的注解,可以帮助我们简化 SQL 语句的编写,并提高查询效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值