mysql中sql语句的常用语句
1:提取公共的sql语句:

2:动态添加----sql语句:


代码:
<insert id="test1" parameterType="com.floor.shop.model.Product">
INSERT INTO product
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="productName!=null and productName!=''">
product_name,
</if>
<if test="stockNum!=null and stockNum!=''">
stock_num,
</if>
<if test="salePrice!=null and salePrice!=''">
sale_price,
</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=","> <if test="productName!=null and productName!=''">
#{productName},
</if>
<if test="stockNum!=null and stockNum!=''">
#{stockNum},
</if>
<if test="salePrice!=null and salePrice!=''">
#{salePrice},
</if> </trim>
</insert>
3:动态修改----sql语句:

4:增加前避免重复:
(当userName在数据库中不存在的情况下,增加到数据库)

5:修改或者新增获取受影响的行数:

6:新增自动获取主键(新增id):

7:dao多参数处理,不封装的情况下传递参数:

mapper中的sql语句不用添加参数类型(paramater=" ")

8:传入多个值的数组处理(foreach):

接口:

映射文件:

测试:

批量新增,数据采用list传入:
<insert id="saveCustomerOpenBankInfo" parameterType="List">
INSERT INTO resource_customer_openbank(id,open_name,account_number,open_bank,customer_id)
VALUES
<foreach item="item" collection="list" index="idx" open="" separator="," close="">
(#{item.id}, #{item.openName}, #{item.accountNumber},#{item.openBank},#{item.customerId})
</foreach>
</insert>
批量插入去重数据:
<!--插入用户角色信息 --> <insert id="insertUserRole" parameterType="ArrayList" >
insert into usi_user_role (user_id,role_id)
<foreach collection="list" item="item" index="index" separator="union all">
select #{item.userid,jdbcType=VARCHAR},
#{item.roleid,jdbcType=VARCHAR} from dual where not exists(select * from usi_user_role
where user_id = #{item.userid,jdbcType=VARCHAR}
and role_id = #{item.roleid,jdbcType=VARCHAR})
</foreach> </insert>
mybatis like 拼接、动态sql拼接:
1、CONCAT()拼接%:
SELECT * FROM t_usr WHERE name like CONCAT('%',#{name},'%')
2:bind:
SELECT *
FROM t_usr
WHERE
<if test="name !=null || name !=''">
<bind name="name" value="'%' + name + '%'"/>
name like #{name}
</if>
mysql中sql语句的常用语句的更多相关文章
- mysql中SQL执行过程详解与用于预处理语句的SQL语法
mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...
- mysql中与 in 相反的语句 find_in_set('数据',字段名)
在 mysql 中,我们经常用 in 来查询众多数据中是否有数据表字段中的值: 如果我们在数据表的字段中添加了很多值,然后查询某个值是否是这个字段中众多值的一个时可以用 find_in_set('数据 ...
- MySQL增删改查的常用语句汇总
MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...
- MySQL进口.sql文件和常用命令
MySQL进口.sql文件和常用命令 在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次运行多条sql命令的.在mysql中运行sql文件的命令: mysql> so ...
- MySQL中SQL语句2
上一片介绍了一些基本的SQL的增删改查,这一片会介绍一些进阶的SQL语句使用. MySQL中的视图 视图是什么?当我们总是查询几张表的某个字段时,可以创建一张虚拟表,把这几个字段写入这个虚拟的表,这样 ...
- MySQL 中 SQL语句大全(详细)
sql语句总结 总结内容 1. 基本概念 2. SQL列的常用类型 3. DDL简单操作 3.1 数据库操作 3.2 表操作 4. DML操作 4.1 修改操作(UPDATE SET) 4.2 插入操 ...
- MySql中SQL语句与其他数据库不一样的地方
目前发现的mysql与其他数据库如SqlServer.Oracle不同的地方 mysql中的注释(--)后要多加一个空格才生效 mysql中查询条件的字符串可以是双引号 mysql中查询条件的字符串不 ...
- mysql 中sql语句的执行顺序
今天突然想起来,之前面试一个很牛逼的公司(soho)的时候,一个美眉面试官,面试的时候问到了很多之前都没有意识到的问题,回想起来那美眉看着年纪不大,技术那是真666啊.好了说一下人家问的这个有关mys ...
- Mysql中truncate table和delete语句的区别
Mysql中的truncate table和delete语句都可以删除表里面所有数据,但是在一些情况下有些不同! 例子: truncate table gag; (1)truncate table删除 ...
- MySQL导入SQL文件及常用命令
在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> source d:/myprogr ...
随机推荐
- lsof 查看端口占用的进程ID
1. nohup execute >/dev/null 2>&1 & 提交了一个后台jobs 2. 然后查看一下 哪个进程正在用 3. yum 安装lsof yum ins ...
- ArrayMap代码分析
Java提供了HashMap,但是HashMap对于手机端而言,对内存的占用太大,所以Android提供了SparseArray和ArrayMap.二者都是基于二分查找,所以数据量大的时候,最坏效率会 ...
- PHP hexdec() 函数
hexdec() 函数把十六进制转换为十进制. 语法 hexdec(hex_string) 参数 描述 hex_string 必需.规定要转换的十六进制数. 说明 返回与 hex_string 参数所 ...
- Redis无法保存ef复杂对象
最近项目需要使用redis. 然后我就满怀激情开始处理数据层了.在原来查询数据的基础上,有封装了一个redis缓存层. 结果在redis保存ef对象的时候,发现了一个非常尴尬的问题. model: p ...
- Java中字符串string的数据类型
Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...
- 【LOJ#6041】事情的相似度(后缀自动机)
[LOJ#6041]事情的相似度(后缀自动机) 题面 LOJ 题解 \(\mbox{YCB}\)搬了这道题目...\(\mbox{QwQ}\) 还是用到\(lcp\)就是\(parent\)树上的\( ...
- qbxt的题:找一个三元环
有向图中找一个三元环 题意: 考虑 N 个人玩一个游戏, 任意两个人之间进行一场游戏 (共 N*(N-1)/2 场),且每场一定能分出胜负.现在,你需要在其中找到三个人构成的这样的局面:A战胜B,B战 ...
- 收藏:Non-direct与direct ByteBuffer区别
相信大家都知道,但是两者的区别在什么地方呢?在不同的环境下采用哪种类型的ByteBuffer会更有效率呢?先解释一下两者的区别:Non-directByteBuffer内存是分配在堆上的,直接由Jav ...
- 斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)
本章节主要讲怎么确定梯度下降的工作是正确的,第二是怎么选择学习率α,如下图所示: 上图显示的是梯度下降算法迭代过程中的代价函数j(θ)的值,横轴是迭代步数,纵轴是j(θ)的值 如果梯度算法正常工作,那 ...
- apache 基本vhost配置 【目的及过程】
转: apache 基本vhost配置 2012年04月18日 09:39:28 chamtianjiao 阅读数:74075 经常使用Apache虚拟主机进行开发和测试,但每次需要配置虚拟主 ...