PgSQL数组类型字段模糊查询

MyBatis+PgSQL 实现数组类型字段的模糊查询功能

背景

项目列表,根据合作类型模糊查询,每个项目可以对应多个合作类型。
例如:根据合作类型=视频查询,可以查询出合作类型为“视频,图文” 和 “视频”的项目。

数据库定义一个数组类型的字段

用过PgSQL的朋友因该都知道,PgSQL可以直接定义数组类型的字段,
假如有一个project_info表,我们给表增加一个数组类型的字段cooperation_type

ALTER TABLE public.project_info ADD  cooperation_type int[] NULL;
COMMENT ON COLUMN public.project_info.cooperation_type IS '合作类型';

表设计
在这里插入图片描述

存值格式为{ xx, xx},与下面xml里的集合遍历格式是有关联的
在这里插入图片描述

实体类

由于数据库字段是 int[]类型的,定义实体类的时候自然要定义成list


```java
    // 合作类型
    private List<Integer> cooperationType;
MyBatis Mapper.xml文件
 <select id="queryListByCondition">
       SELECT 
              * 
       FROM  project_info
        <where>
            1=1
            <if test="cooperationType != null and !cooperationType.isEmpty()">
                AND
                <foreach collection="cooperationType" item="item" open="'{" close="}'" separator=",">
                    ${item}
                </foreach>
                &amp;&amp; (cooperation_type)
            </if>
        </where>
    </select>

查询结果

输入2,可以查出所有包含2的
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值