-
insert
操作,用
foreach
标签做循环插入操作,两种不同的写法,注意foreach位置不同。
@Insert(" <script> "
+ " <if test = 'list != null and list.length > 0' >"
+ " <foreach collection='list ' item='val' index='index' separator=';'>"
+ " insert into table(id, bm, mc, jgbm) values "
+ " <![CDATA[ (#{id}, #{val.bm}, #{val.mc}, #{jgbm}) ]]>"
+ " </foreach>"
+ " </if>"
+ " </script>")
void insData(AbcBean bean);
@Insert("<script> "
+ " insert into tms_rc_lkxx(id,rcid,jgbm) values "
+ " <foreach collection='param1' item='item' index='index' separator=','> "
+ " <![CDATA[ (f_newid(),#{item.rcid},#{param2.jgbm}) ]]> "
+ " </foreach> "
+ "</script> ")
int addLkxx(List<LkblBean> param1,LkblczBean param2);
select
操作,用foreach
配合in
语句,查询bm1在jsidList里的数据
@Select("<script>"
+ " <if test = 'jsidList != null and jsidList.size > 0' >"
+ " select bm fsdq "
+ " from tms_jg_bmb "
+ " where jgbm like #{zxbm}||'%' and bm1 in"
+ " <foreach collection='jsidList' item='val' index='index' open='(' separator=',' close=')'>"
+ " #{val}"
+ " </foreach>"
+ " </if>"
+ "</script>")
String getFsdq(@Param("zxbm") String zxbm, @Param("jsidList") List<String> jsidList);
update
操作,使用foreach
循环更新list里的对象。
@Update("<script>" +
" <foreach collection='list' item='item' index='index' separator=';' " +
" open=\"\" close=\"\"> " +
" update rctable set rczt = #{item.bglx}" +
" where rcid = #{item.rcid} " +
" </foreach> " +
"</script>")
void updateRcxxzt(List<RcztBgBean> list);
update
操作,使用if
判断字段是否需要更新
@Update("<script> "
+ " update lkxx "
+ " <trim prefix='set' suffixOverrides=','> "
+ " <if test='slklx != null and \"\" != slklx'> lklx=#{slklx}, lklxmc=#{slklxmc}, </if>"
+ " <if test='slkzksj != null and \"\" != slkzksj'> zksj=to_timestamp(#{slkzksj}, 'yyyy-MM-dd'), </if>"
+ " </trim>"
+ " where rcid = #{rcid} "
+ "</script>")
void xglkxx(LkxxBean bean);
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。
item集合中每一个元素进行迭代时的别名,
index表示在迭代过程中,每次迭代到的位置,
open该语句以什么开始,
separator在每行数据之间以什么符号作为分隔符,有 union、union all、 逗号
close以什么结束
在使用foreach的时候最关键的也是最容易出错的就是collectio
微信公众号(年更选手):数据闲逛人 | Github开源项目:数分/数挖study路线 https://github.com/jc-dian/python_data_analysis
01-18
PostgreSQL的plpgsql编程语言和Oracle PL/SQL编程语言类似,是功能很强大的数据库编程语言。
JSON是PG支持的非结构化类型,那么如何在PLPGSQL中LOOP JSON数组呢?
https://www.postgr...
PostgreSQL 提供了丰富的数据类型。用户可以使用 CREATE TYPE 命令在数据库中创建新的数据类型。PostgreSQL 的数据类型被分为四种,分别是基本数据类型、复合数据类型、域和伪类型。
基本数据类型是数据库内置的数据类型,包括integer、char、varchar等数据类型。表6-1列出了`PostgreSQL提供的所有基本数据类型。复合数据类型是用户自己定义的,使用CREATE TYPE命令就能创建一个复合数据类型。域是一种特殊的基本数据类型,它由基本数据类型加上一个约束条
postgresql 批量插入数据(含数组使用)postgresql 批量插入数据(含数组使用)具体sql语句
postgresql 批量插入数据(含数组使用)
使用postgreSql 进行批量插入数据,因为有些字段是不能自动生成的,所以使用数组进行循环插入
具体sql语句
do $$
declare
i integer; -- 定义使用变量
testArr varchar array; -- 数组定义
begin -- 开始
i :=2200;
testArr := array['张三','李四',
结构控制和循环介绍:
作为编程语言中极为重要的知识,控制和循环可以降低代码量和减少人的工作量。在PL/PGSQL中实现了常用的控制结构和循环方法,灵活使用确实可以用来提高数据库查询的效率。
结构控制:
1. 结构:IF ... THEN ... ELSIF ... THEN ... ELSE ... END IF
CREATE OR REPLACE FUNCTION mydb.mysc.learn_conditional01(IN num integer,OUT result_st...
1、先看问题,提示的语法错误,在" " 附近,(对于这个提示我也挺懵!);能明显看出mybatis生成的sql之间存在很多空格;
2、把控制台的sql单独拿出来测试,发现把空格都去掉就没问题了。
去点后如下图
3、看一下mapper.xml中的sql,看了好多遍真没发现什么毛病;
select * from sz_zcxx
<where>
<if test="zclbmc != null">
and zclbmc = #{zclbmc}
要将 JSONB 字段的字符串类型转换为数组类型,您可以使用 PostgreSQL 的 JSONB 函数。具体来说,您可以使用 JSONB_ARRAY_ELEMENTS 函数将 JSONB 字段的值转换为数组,然后使用 CAST 函数将数组元素转换为字符串类型。以下是示例代码:
```sql
SELECT CAST(jsonb_array_elements('["foo", "bar", "baz"]') AS TEXT[]);
在上面的代码中,我们将 JSONB 字符串 `["foo", "bar", "baz"]` 转换为数组类型,并使用 CAST 函数将数组元素转换为字符串类型。此查询将返回一个包含字符串元素的数组。
如果您想从一个 JSONB 字段中提取数组,您可以将 JSONB 字段名替换为字段值,如下所示:
```sql
SELECT CAST(jsonb_array_elements('["foo", "bar", "baz"]') AS TEXT[]);
这将返回一个包含 JSONB 字段值中的字符串元素的数组。