ibatis  SQL里进行条件查询

本文介绍了SQL中常用的条件查询关键字及其用法,包括isEqual、isNotNull等,并展示了如何使用这些关键字来构建复杂的查询条件。此外,还讲解了SQL中的集合操作如union、intersect等的使用方法。

条件查询关键字:

    <isPropertyAvailable>  如果参数有使用则查询条件有效。 
    <isNotPropertyAvailable> 如果参数没有使用则查询条件有效。 
    <isNull> 如果参数为NULL则查询条件有效。 
    <isNotNull> 如果参数不为NULL则查询条件有效。 
    <isEmpty> 如果参数为空则查询条件有效。 
    <isNotEmpty> 如果参数不为NULL或者“”则查询条件有效。参数的数据类型为Collection。 

String类型的参数,数不为NULL或“”,如下所示: 
<isNotEmpty  prepend=”AND” property=”firstName” > 
    FIRST_NAME=#firstName# 
</isNotEmpty> 

    <isEqual> 如果参数相等于值则查询条件有效。 
    <isNotEqual> 如果参数不等于值则查询条件有效。 
    <isGreaterThan> 如果参数大于值则查询条件有效。 
    <isGreaterEqual> 如果参数等于值则查询条件有效。 
    <isLessEqual> 如果参数小于值则查询条件有效。如下所示: 

<isLessEqual  prepend = ”AND” property = ”age” compareValue = ”18” > 
    ADOLESCENT = ‘TRUE’ 
</isLessEqual> 

元素属性:

    prepend:  可被覆盖的SQL语句组成部分,添加在语句的前面。 
    property:  被比较的属性 
    compareProperty: 另一个被比较的属性 
    compareValue:    被比较的值 

具体应用:

1. <isEqual>根据参数值判断,相当于equals,通常是判断状态值;

    property=" "是SQL里的参数名,compareValue=" "是要判断比较的值;

    示例:根据开房方式查询原房价,checkType是开房方式,等于1是天房,查询天房房价,等于2是钟点房,查询钟点房房价。

<!-- 查询原房价 -->
<select id="getRoomFormerPrice"  parameterClass="HashMap" resultClass="int">
    select 
    <isEqual property="checkType" compareValue="1">
        ROOM_PRICE
    </isEqual>
    <isEqual property="checkType" compareValue="2">
        HOUR_ROOM_PRICE
    </isEqual>
    from
        t_roomprice_scheme
    where
        ROOM_TYPE_ID=#roomTypeId#
    AND
        ROOM_SCHEME_ID=#roomSchemeId#
    AND 
        HOTEL_ID=#hotelId#
</select>

2.<isNotNull>判断property字段是否是null,通常用于条件查询:

<isNotNull prepend="AND" property="id" >
    a.id=#id#
</isNotNull>

集合操作 并 交 差运算:

 union :得到两个查询结果的并集,并且自动去掉重复行。不会排序

 union all:得到两个查询结果的并集,不会去掉重复行。也不会排序

 intersect:得到两个查询结果的交集,并且按照结果集的第一个列进行排序

 minus:得到两个查询结果的减集,以第一列进行排序

### Spring Boot整合MyBatis-Plus教程 #### 1. Maven依赖配置 在`pom.xml`文件中引入MyBatis-Plus的核心依赖和分页插件依赖。以下是具体的依赖配置[^3]: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.5</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> ``` #### 2. 配置文件设置 在`application.yml`或`application.properties`中进行数据库连接和其他相关配置。以下是一个示例的`application.yml`配置[^3]: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath*:mapper/*.xml ``` #### 3. Mapper接口继承BaseMapper 创建一个Mapper接口,并继承`BaseMapper<T>`,其中`T`为实体类类型。例如,假设有一个`UserEntity`实体类[^1]: ```java package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.Entity.UserEntity; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<UserEntity> { } ``` #### 4. Service层设计 定义一个Service接口并继承`IService<T>`,然后创建其实现类并继承`ServiceImpl<M, T>`,其中`M`为Mapper接口,`T`为实体类类型[^1]。 **Service接口:** ```java package com.example.demo.service; import com.baomidou.mybatisplus.extension.service.IService; import com.example.demo.Entity.UserEntity; public interface UserService extends IService<UserEntity> { } ``` **ServiceImpl实现类:** ```java package com.example.demo.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.demo.mapper.UserMapper; import com.example.demo.service.UserService; import com.example.demo.Entity.UserEntity; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService { } ``` #### 5. 条件构造器使用示例 MyBatis-Plus提供了强大的条件构造器`QueryWrapper`和`UpdateWrapper`,用于动态构建SQL语句。 **查询示例:** ```java package com.example.demo.controller; import com.example.demo.Entity.UserEntity; import com.example.demo.mapper.UserMapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users") public List<UserEntity> getUsers() { QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.like("name", "John").gt("age", 18); return userMapper.selectList(queryWrapper); } } ``` **更新示例:** ```java @Autowired private UserMapper userMapper; public void updateUserAge(int id) { UserEntity user = new UserEntity(); user.setId(id); user.setAge(25); UpdateWrapper<UserEntity> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id); userMapper.update(user, updateWrapper); } ``` #### 6. CRUD操作示例 MyBatis-Plus通过`BaseMapper`接口提供了丰富的CRUD方法。 **插入数据:** ```java UserEntity user = new UserEntity(); user.setName("Alice"); user.setAge(22); userMapper.insert(user); ``` **删除数据:** ```java userMapper.deleteById(1L); // 根据ID删除 ``` **更新数据:** ```java UserEntity user = new UserEntity(); user.setId(1L); user.setAge(23); userMapper.updateById(user); ``` **查询数据:** ```java UserEntity user = userMapper.selectById(1L); // 根据ID查询 List<UserEntity> users = userMapper.selectList(null); // 查询所有 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值