PostgreSql整合mybatis实现@>包含功能

       在pgsql中带有操作符@>可实现其左边的包含右边的对象。在日常开发中经常使用到,本文主要讲,当字段为VARCHAR类型,数据格式为以','分隔形式,如何利用@>操作符在mybatis中实现该功能。

定义 课程表 tbl_class,定义学生表tbl_student

<-- 课程表-->
CREATE TABLE public.tbl_class (
	id serial NOT NULL,
	class_code varchar NOT NULL,
	class_name varchar NOT NULL,
	CONSTRAINT tbl_class_pk PRIMARY KEY (id)
);

-- Column comments

COMMENT ON COLUMN public.tbl_class.id IS '主键';
COMMENT ON COLUMN public.tbl_class.class_code IS '课程代号';
COMMENT ON COLUMN public.tbl_class.class_name IS '课程名称';
<--初始化数据-->
INSERT INTO public.tbl_class
(id, class_code, class_name)
VALUES(1, '0001', '语文');
INSERT INTO public.tbl_class
(id, class_code, class_name)
VALUES(2, '0002', '数学');
INSERT INTO public.tbl_class
(id, class_code, class_name)
VALUES(3, '003', '外语');
INSERT INTO public.tbl_class
(id, class_code, class_name)
VALUES(4, '004', '物理');
INSERT INTO public.tbl_class
(id, class_code, class_name)
VALUES(5, '005', '化学');



<-- 学生表-->
CREATE TABLE public.tbl_student (
	id serial NOT NULL,
	"name" varchar NOT NULL,
	student_class varchar NULL,
	code varchar NULL,
	CONSTRAINT tbl_student_pk PRIMARY KEY (id)
);

-- Column comments

COMMENT ON COLUMN public.tbl_student.id IS '主键';
COMMENT ON COLUMN public.tbl_student."name" IS '学生姓名';
COMMENT ON COLUMN public.tbl_student.student_class IS '学生所选的课程代号';
COMMENT ON COLUMN public.tbl_student.code IS '学号';


INSERT INTO public.tbl_student
(id, "name", student_class, code)
VALUES(1, '小刘', '001,002,004', 'x001');
INSERT INTO public.tbl_student
(id, "name", student_class, code)
VALUES(2, '小毛', '002,003', 'm002');
INSERT INTO public.tbl_student
(id, "name", student_class, code)
VALUES(3, '小孙', '001,002,003,004,005', 's003');
INSERT INTO public.tbl_student
(id, "name", student_class, code)
VALUES(4, '小张', '001,005', 'z004');
INSERT INTO public.tbl_student
(id, "name", student_class, code)
VALUES(5, '小闫', '004,005', 'y005');

即在学生表(tbl_student)字段student_class中,表示为每个学生所学的课程,以','(逗号)形式隔开。

现在需求为,筛选出哪些人选择了语文课(代号是001)

利用pgsql的@>如下:

select * from tbl_student ts where string_to_array(student_class,',')@>array['001'] 

结果如下:

​​​​​​​

 

可以看出@>可以筛选出左边包含右边的数据。

下面介绍在mybatis中的使用,在mybatis中,mybatis将string_to_array(student_class,',')识别为一text[]类型,故需在最后将其强转为text[]即可。

select
            *
        from
            tbl_student ts
        <where>
            string_to_array(student_class, ',')<![CDATA[@>]]>array[#{classCode,jdbcType=VARCHAR }]::text[]
        </where>

即:

<select id ="getStudentByClass" resultMap="BaseMap">
select
            *
        from
            tbl_student ts
        <where>
            string_to_array(student_class, ',')<![CDATA[@>]]>array[#{classCode,jdbcType=VARCHAR }]::text[]
        </where>
</select>

其中@>操作符需要在mybatis中需要使用<![CDATA[@>]]>来修饰以免不能被mybatis识别。

以上就是PostgreSql整合mybatis实现@>包含功能的说明

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 要在项目中整合PostgreSQLMyBatis-Plus,你需要进行以下几个步骤。 首先,你需要在项目的pom.xml文件中添加MyBatis-Plus和PostgreSQL的依赖项。在依赖项中,你需要添加以下代码段:\[1\] ```xml <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!-- postgresql --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> ``` 接下来,你需要在项目的application.yml文件中进行配置。你需要设置数据库的连接信息,包括URL、用户名和密码。此外,你还需要设置schema的名称。以下是一个示例配置:\[2\] ```yaml spring: datasource: platform: postgres url: jdbc:postgresql://192.188.1.245:5432/uum?currentSchema=uum schemaName: uum username: xxxx password: xxxx driver-class-name: org.postgresql.Driver ``` 最后,你需要在数据库中创建自增字段。在PostgreSQL中,你可以使用sequence来实现自增字段的功能。以下是一个示例的SQL语句:\[3\] ```sql create sequence uum.userid_seq start with 1 increment by 1 no minvalue no maxvalue cache 1; alter sequence uum.userid_seq owner to smartsys; alter table uum.user alter column id set default nextval('uum.userid_seq'); ``` 通过以上步骤,你就可以成功地将PostgreSQLMyBatis-Plus整合在一起了。你可以使用MyBatis-Plus提供的功能来进行数据库操作。 #### 引用[.reference_title] - *1* [springboot 整合 mybatis plus postgresql](https://blog.csdn.net/weixin_41010294/article/details/105710247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MybatisPlus+Postgresql整合的几个坑](https://blog.csdn.net/xuruilll/article/details/122670781)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值