Mybatis中的Criteria条件查询方式是一种高级的查询方式,它允许我们通过代码生成复杂的SQL查询语句,提高查询效率。下面是详细的攻略:
什么是Criteria条件查询方式
Criteria是Mybatis中提供的一种用于生成SQL语句的API。使用它可以构建复杂的查询语句,支持动态参数和多条件查询,可以避免手写SQL语句的繁琐和可能引发的SQL注入风险。
Criteria的基本使用方法
创建Criteria对象:
Criteria criteria = sqlSessionFactory.openSession().createCriteria(User.class);
我们需要先创建一个Criteria对象,这里我们以User类为例来创建一个Criteria对象,后面我们将使用它来构建查询条件。
添加查询条件:
criteria.add(Restrictions.eq("name", "张三"));
添加单一条件查询,这里我们查询姓名为"张三"的用户数据。Restrictions
是Criteria提供的静态方法,可以使用多种方法生成不同的查询条件。
criteria.add(Restrictions.gt("age", 18))
.add(Restrictions.like("name", "张"))
.add(Restrictions.or(Restrictions.eq("sex", "男"), Restrictions.isNull("sex")));
添加复杂查询条件示例,上述代码将查询年龄大于18岁,姓名包含“张”,并且性别为男或不填的用户数据。
添加排序功能:
criteria.addOrder(Order.desc("create_time"));
上述代码将查询结果按创建时间降序排列。
添加分页功能:
criteria.setFirstResult(0).setMaxResults(5);
上述代码将分页查询,查询第0条到第5条数据。
执行查询:
List<User> userList = criteria.list();
上述代码将执行查询操作,并将查询结果封装在一个List中返回。
Criteria的实战应用
下面我们用具体的示例来演示如何使用Criteria进行查询。
示例1:查询年龄大于18岁且性别为男的用户列表,并按创建时间倒序排列
Criteria criteria = sqlSessionFactory.openSession().createCriteria(User.class);
criteria.add(Restrictions.gt("age", 18))
.add(Restrictions.eq("sex", "男"))
.addOrder(Order.desc("create_time"));
List<User> userList = criteria.list();
上述代码将查询年龄大于18岁且性别为男的用户数据,在结果中按创建时间倒序排列,结果保存在userList中。
示例2:查询用户名为"张三"或者"李四"的用户列表
Criteria criteria = sqlSessionFactory.openSession().createCriteria(User.class);
criteria.add(Restrictions.in("name", new Object[] { "张三", "李四" }));
List<User> userList = criteria.list();
上述代码将查询用户名为"张三"或者"李四"的用户数据,结果保存在userList中。
以上就是使用Mybatis中的Criteria条件查询方式的详细攻略,希望可以帮助到大家。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis中的Criteria条件查询方式 - Python技术站