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语句的常用语句的更多相关文章

  1. mysql中SQL执行过程详解与用于预处理语句的SQL语法

    mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...

  2. mysql中与 in 相反的语句 find_in_set('数据',字段名)

    在 mysql 中,我们经常用 in 来查询众多数据中是否有数据表字段中的值: 如果我们在数据表的字段中添加了很多值,然后查询某个值是否是这个字段中众多值的一个时可以用 find_in_set('数据 ...

  3. MySQL增删改查的常用语句汇总

    MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...

  4. MySQL进口.sql文件和常用命令

    MySQL进口.sql文件和常用命令 在MySQL Qurey   Brower中直接导入*.sql脚本,是不能一次运行多条sql命令的.在mysql中运行sql文件的命令: mysql> so ...

  5. MySQL中SQL语句2

    上一片介绍了一些基本的SQL的增删改查,这一片会介绍一些进阶的SQL语句使用. MySQL中的视图 视图是什么?当我们总是查询几张表的某个字段时,可以创建一张虚拟表,把这几个字段写入这个虚拟的表,这样 ...

  6. MySQL 中 SQL语句大全(详细)

    sql语句总结 总结内容 1. 基本概念 2. SQL列的常用类型 3. DDL简单操作 3.1 数据库操作 3.2 表操作 4. DML操作 4.1 修改操作(UPDATE SET) 4.2 插入操 ...

  7. MySql中SQL语句与其他数据库不一样的地方

    目前发现的mysql与其他数据库如SqlServer.Oracle不同的地方 mysql中的注释(--)后要多加一个空格才生效 mysql中查询条件的字符串可以是双引号 mysql中查询条件的字符串不 ...

  8. mysql 中sql语句的执行顺序

    今天突然想起来,之前面试一个很牛逼的公司(soho)的时候,一个美眉面试官,面试的时候问到了很多之前都没有意识到的问题,回想起来那美眉看着年纪不大,技术那是真666啊.好了说一下人家问的这个有关mys ...

  9. Mysql中truncate table和delete语句的区别

    Mysql中的truncate table和delete语句都可以删除表里面所有数据,但是在一些情况下有些不同! 例子: truncate table gag; (1)truncate table删除 ...

  10. MySQL导入SQL文件及常用命令

      在MySQL Qurey   Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> source   d:/myprogr ...

随机推荐

  1. Jmeter 常用断言使用

    响应断言 可根据要测试响应字段和模式匹配规则来设置断言,比如下方截图是匹配返回的结果中是否包含"code:200,",如果包含则表示断言成功,否则失败.响应断言可添加多个,但是多个 ...

  2. node之jade和ejs的使用方法 jade篇

    let express = require('express'); let consolidate = require('consolidate'); let app = express(); // ...

  3. Oracle测试环境参数调整.

    测试环境上面Oracle数据库性能参数设置 1. 关闭回收站 alter system set recyclebin=off 2. 修改redo日志的大小 11g的默认大小是50m 如果redo fi ...

  4. 转发--UIPATH http://baijiahao.baidu.com/s?id=1596656405106773890&wfr=spider&for=pc&qq-pf-to=pcqq.c2c

    之前和朋友聊起RPA,他们第一反应就是哎哟,主流几家vendor太贵了. 我们公司业务量没有那么大,用不上啦~ 尤其Blue Prism和 Automation anywhere报价,一般规模的企业一 ...

  5. PS(光影魔术手)

    完成

  6. Lodop设置文本项行间距、字间距

    LODOP给文本项ADD_PRINT_TEXT设置字间距.行间距,可以在打印设计页面,右键属性里设置,然后在打印设计生成代码,也可以直接写代码.LineSpacing行间距.LetterSpacing ...

  7. 洛谷 P4294 [WC2008]游览计划

    题目链接 不是很会呢,但似乎抄了题解后有点明白了 sol:状态DP显然,其实是要构建一棵最小生成树一样的东西,我自己的理解(可能不是很对哦希望多多指教)f[x][y][zt]就是到x,y这个点,状态为 ...

  8. gbk、utf-8、utf8mb4区别

    1. 存储大小(1). GBK编码专门用来解决中文编码的,是双字节的.不论中英文都是双字节的.(2). UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用2 ...

  9. [USACO 2010 Open Silver 3.Time Travel]——链表

    Description 约翰得到了一台时光机,他可以用这台机器回到过去(但不能到未来),改变他家的牛群.约翰 打算依次进行 N 步操作,每步操作分为三种: • 买入操作以 a 表示,后接一个参数 i, ...

  10. BZOJ1926[Sdoi2010]粟粟的书架——二分答案+主席树

    题目描述 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位 ...