首页 > 数据库 >mybatis 之 sql语句写法集锦

mybatis 之 sql语句写法集锦

时间:2022-11-19 12:00:40浏览次数:52  
标签:语句 List update item 集锦 sql mybatis id

1、mapper接口中的方法存在批量数据操作,接口参数是List类型

     在mybatis的 xml 文件中,使用 foreach 动态标签拼接 SQL 语句,每一条数据的更新语句对应一条update语句,多条语句最终使用";"号进 行拼接

<update id="updateBatchById">
    <foreach collection="list" item="item" separator=";">
        update
            `t_student`
        set
            `name` = #{item.name},
            `age` = #{item.age}
        where
            id = #{item.id}
    </foreach>
</update>

说明:其中 "list" 是接口参数类型为List的参数变量名;"item" 是List中的每个项,临时变量名;

执行下来之后,多个sql语句是以;拼接的,如: update xxxxx;update xxxx;update xxxx;

但存在部分数据库不支持多个sql语句一起执行,使用 ;隔开的方式,此时可以通过在数据库连接URL中指定allowMultiQueries参数值为true告诉数据库以支持”;"号分隔的多条语句的执行。

 

2、批量更新,使用 foreach 更新,加入 <set><if> 标签判断与设置

<update id="updatePrice">
        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
            update price_info
            <set>

                <if test="item.status != null and item.status != ''">
                    status = #{item.status},
                </if>
                <if test="item.price != null and item.price != ''">
                    price = #{item.price},
                </if>
            </set>
            where id = #{item.id}
        </foreach>
    </update>

 PS:只有string类型的数据才能使用 xxx  != ' '   当其他类型使用就会报类型转换错误

 

 

标签:语句,List,update,item,集锦,sql,mybatis,id
From: https://www.cnblogs.com/sandyflower/p/16905808.html

相关文章

  • DMSQL
    1、SQL语法分类DML(DataMannipulationLanguage)数据操纵语言:查询、操纵数据表资料行,包含SELECT、INSERT、UPDATE、DELETE,MERGE。默认情况下,DML不自动提交,需要手工提......
  • Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库
    【最终呈现效果】【原始Excel数据表】【代码实现及注释】importpandasaspdimporttimeimportreti=time.strftime('%Y_%m_%d_%H%M%S',time.localtime())myexcel=r'G:\M......
  • Mysql历史介绍及多版本安装
    目录一、数据库概述1.1什么是数据库1.2数据库的分类1.3Mysql企业版本选择二、Windows多版本部署Mysql数据库2.1mysql5.6版本安装2.2mysql5.7版本安装2.3mysql8.0版......
  • MYSQL
    创建数据表 CREATETABLEIFNOTEXISTSstudent(idINT(4)NOTNULLAUTO_INCREMENTCOMMENT'学号',NAMEVARCHAR(30)NOTNULLDEFAULT'小明'COMMENT'姓名',PRI......
  • 提升mysql服务器性能(存储引擎与配置参数设置)
    服务层实现了与引擎无关的性能 frm用于记录结构 使用表锁 使用共享所和读锁支持全文索引 前缀索引  如果不对表进行操作尽可以进行压缩; myisamchk 命令行工具需......
  • sql优化
     以下针对mysql数据库 sql优化方式:1设计合理的数据表结构2对数据表建立合适有效的数据库索引3编写简洁高效的SQL语句--------------------------------------表结构设......
  • Mysql命令行使用source执行.sql文件报错
    问题描述在windows上,使用命令行登录mysql,使用source命令执行xxx.sql文件,报错。将文件里的内容粘贴在命令行可以正确执行。原因连接mysql时没有设置编码解决mysql-u......
  • PostgreSQL里TID(对应于oracle里的rowid)
    Toidentifyatuplewithinthetable,tupleidentifier(TID)isinternallyused.ATIDcomprisesapairofvalues:theblocknumberofthepagethatcontainst......
  • 2022-11-17 mysql列存储引擎-聚合中间缓存结果-分析
    摘要:mysql列存储引擎-聚合中间缓存结果-分析DML:TPCH表使用Q16selectp_brand,p_type,p_size,count(distinctps_suppkey)assupplier_cntfrompartsupp,partwh......
  • 解决MySQL使用limit偏移量较大效率慢的问题
    备注:第二个方法妥妥的问题描述在MySQL中,LIMITOFFSET偏移量特别大时,效率会非常低如果说LIMIT1000,10,一个偏移量很小的值,一般是没有问题的。但是,比如说,LIMIT10000000,10......