通过 mybatis criteria如何实现
时间: 2023-06-25 22:02:20 浏览: 61
MyBatis Criteria 是 MyBatis 提供的一种查询方式,它可以通过编写 Java 代码来构建 SQL 查询语句,而不用直接编写 SQL 语句。下面是使用 MyBatis Criteria 实现查询的一个示例:
假设有一个 User 实体类,包含 id、name 和 age 三个属性,现在要查询所有 age 大于 18 的用户,可以使用如下代码:
```
Criteria criteria = new Criteria();
criteria.andGreaterThan("age", 18);
List<User> users = sqlSession.selectList("com.example.mapper.UserMapper.selectByExample", criteria);
```
其中 `Criteria` 是 MyBatis Criteria 的核心类,通过 `criteria.andGreaterThan("age", 18)` 方法可以添加查询条件,表示 age 大于 18。最后通过 `sqlSession.selectList` 方法执行查询并返回结果。
需要注意的是,使用 MyBatis Criteria 查询时,需要在 Mapper.xml 中编写对应的 SQL 语句,以及对应的 resultMap 映射关系。
相关问题
mybatis criteria 动态查询条件
MyBatis Criteria 是一种动态查询条件语法,它允许您在运行时动态地构建 SQL 查询语句。使用 Criteria,您可以根据不同的条件组合创建复杂的查询语句。
以下是一些 MyBatis Criteria 的示例:
1. 等于查询
```java
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("username", "admin"));
```
2. 模糊查询
```java
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.like("username", "a%"));
```
3. 大于查询
```java
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.gt("age", 18));
```
4. 或查询
```java
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.or(Restrictions.eq("username", "admin"), Restrictions.eq("username", "root")));
```
5. 分页查询
```java
Criteria criteria = session.createCriteria(User.class);
criteria.setFirstResult(0);
criteria.setMaxResults(10);
```
以上是 MyBatis Criteria 的一些基本用法,您可以根据自己的需求使用更多的条件语法来构建复杂的查询语句。
MyBatis Plus用criteria 进行四表联查
MyBatis Plus提供的Criteria类是用于构建查询条件的,它并不支持多表联查。如果需要进行多表联查,可以使用MyBatis Plus提供的Wrapper类,或者使用MyBatis原生的SQL语句。
下面是使用Wrapper类进行四表联查的示例代码:
```
QueryWrapper<User> userWrapper = new QueryWrapper<>();
userWrapper.select("user.id", "user.name", "dept.name")
.eq("user.status", 1)
.eq("dept.type", "IT")
.eq("role.name", "admin")
.inSql("user.dept_id", "select id from dept where parent_id = 1");
userWrapper.join("dept", "user.dept_id = dept.id")
.join("user_role", "user.id = user_role.user_id")
.join("role", "user_role.role_id = role.id");
List<Map<String, Object>> userList = userMapper.selectMaps(userWrapper);
```
在上面的代码中,我们使用QueryWrapper构建查询条件,并且使用select方法指定需要查询的字段。然后使用join方法进行多表联查,最后使用selectMaps方法查询结果。
需要注意的是,在进行多表联查时,需要使用别名来指定表名,否则可能会出现SQL语句错误。