快捷搜索: 王者荣耀 脱发

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的

经验分享 程序员 微信小程序 职场和发展