Mybatis4 之Mybatis动态sql的实现代码_MsSql

来源:脚本之家  责任编辑:小易  

(互粉走起)赵本山不仅本人很红,赚了很多钱,还带红了一大批徒弟。今天就来说说赵本山几个有代表性的徒弟,看看他们现在过得怎么样。第一位:宋小宝赵本山很多徒弟出身贫寒。早年刷过盘子,住过一晚三块钱的小旅馆,想想就心酸。如今跟过去太不一样了,赵本山徒弟中,宋小宝自称第二,恐怕没人敢称第一。他天生带着幽默感,口才好,善于抓住机会,走红几年来人气一直上升。其实宋小宝可能会红得更早,据说《不差钱》里那个角色本是宋小宝的,但赵本山觉得小沈阳形象更适合。不管怎样,宋小宝后来红了。第二位:王小利王小利1969年出生,是赵本山徒弟中年龄比较大的。2006年,王小利参演《乡村爱情》,饰演刘能。以后很多人叫他“刘能”

1.什么是动态SQL

09年央视春晚,小沈阳凭借《不差钱》一炮而红,随后更是全国各地巡回演出,出场费经常到几十万一场,随后后来几年也不少参加影视节目、电视节目、跨界歌王、参加主持等,事业上可以说越来越多的发展,但是我们却觉得他越来越不红,影响力越来越小呢?首先,从小沈阳出身来说,赵家班每年都要推出几个新人,09年塑造的小沈阳可以说非常成功,为了班子的长远发展,自然要不断推出新人,不可能把时间和精力用在小沈阳身上,离开赵本山的深厚影响,自然会有一定的下跌。比如文松也是娘风格,现在依旧受欢迎。其次,曾经小沈阳和赵本山之间也出现矛盾,虽然表现没有太多风波,但是却独立门户,这种得志以后跟师傅闹矛盾,影响是非常坏的,很多小沈

传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率。

谢邀看到各种吐槽说给对方彼此空间的,我就奇怪了,一定为了隐私才定位?不能是方便夫妻接送,帮助路痴的那位?而且正常情况下,互相定位需要获得授权许可才可以。下面,来谈谈正题,关于手机定位,目前主要有三种方式:基站信号定位,GPS卫星定位,wifi信号定位。基站信号定位:通过手机基站对被定位手机信号进行定位。优点:对被定位手机没有要求,任何智能手机或者非智能手机皆可,不需要被定位手机安装任何软件和增加任何设备设施,只需要被定位手机正常使用过就行。缺点:定位精确度不如GPS手机定位,城区基本在10米左右。备注:该项定位技术必须获得通信运营商授权才可实施定位,普通个人基本没法知道。GPS卫星定位:通过卫

SQL语句不固定, 会根据前台用户的操作而进行变化的SQL语句, 可以被称之为动态SQL. 在MyBatis中, 提供了一组标签, 用于方便的实现动态SQL, 不需要通过java代码拼接字符串了.

首先,联盟会控场这件事已经可以说是公开的秘密了,在以前的季后赛里也屡见不鲜。但G3之后,我的一个朋友发出了疑问:既然要控场,为何不彻底一点?欧文打佛祖那个上篮和尤其乐福那个上篮被切球今天已经证明是犯规了,裁判为什么不吹?有JR说是裁判嘴累了,吹不动了,这明显是在调侃。我猜测真实的原因应该是这样的:校花是何等聪明之人,在跟裁判下任务之前肯定不会单纯地说一句“今天一定要让骑士赢。”他一定考虑了另一种情况,那就是即使在裁判那么大尺度的照顾下,骑士队也几乎发挥出了全力,可依然未处于绝对的上风,那么保住了这一场的意义也不大,还要为人耻笑。他一定给裁判多交代了一句(或者是中场交代的)“你们看,如果骑士队烂

###2.动态sql中的标签

1. <if>

用于条件判断, test属性表示判断结果, 要求是一个boolean.

2.<where>

用于维护where子句, 通常配合一起使用. 如下功能:

a)当没有条件时, 不会创建WHERE关键字;

b)当有条件时, 会自动生成WHERE关键字;

c)会自动去掉第一个条件的and/or关键字.

3.<choose><when><otherwise>

功能类似于switch…case…default, 表示多分支判断, 只能成立一个条件

<mapper namespace="com.bjsxt.mapper.UserMapper"> <select id="selByCondition" resultType="user"> select * from tb_user <where> <if test="id != null"> and id=#{id} </if> <if test="username != null and username != ''"> and username=#{username} </if> <if test="age != null"> and age &lt;&gt; #{age} </if> <choose> <when test="birthday != null and birthday != ''"> and birthday = #{birthday} </when> <otherwise> and birthday is null </otherwise> </choose> </where> </select> </mapper>

4.<bind>

对参数进行加工, 通常用于模糊查询给参数加通配符

<select id="sel2" resultType="user"> <include refid="base_sql" /> <where> <if test="realname != null and realname != ''"> <bind name="realname" value="'%' + realname + '%'"/> and realname like #{realname} </if> </where> </select>

5.<include>

配合使用, 用于提取通用sql语句片段, 用于引用SQL片段

<sql id="base_sql"> select id, username, password, realname, age, birthday, reg_time regTime from tb_user </sql> <select id="sel2" resultType="user"> <include refid="base_sql" /> <where> <if test="realname != null and realname != ''"> <bind name="realname" value="'%' + realname + '%'"/> and realname like #{realname} </if> </where> </select>

6.<set>

用于维护update语句中的set子句, 特点是可以删除多余的逗号

<update id="upd"> update tb_user <set> <if test="username != null and username != ''"> username=#{username}, </if> <if test="age != null"> age=#{age} </if> </set> where id=#{id} </update>

7.<foreach>

遍历集合(数组, List, Set, Map), 通常用于in操作或批量新增. 属性简介:

a)collection: 要遍历的集合

b)item: 迭代项

c)open: 以什么字符开头

d)close: 以什么字符结束

e)separator: 多个迭代项之间的分隔符

<delete id="delBatch"> delete from tb_user <where> id in <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </where> </delete>

8.<trim>

在语句的前后进行追加和去除指定的字符.

<insert id="insBatch"> insert into tb_user values <foreach collection="users" item="user" separator=","> <trim prefix="(" prefixOverrides="," suffix=")" suffixOverrides=","> ,default, #{user.username}, #{user.password}, #{user.realname}, #{user.age}, #{user.birthday}, now(), </trim> </foreach> </insert>

知识点补充:静态sql与动态sql有什么区别

SQL 语句从编译和运行的角度可以分为两种,静态 SQL和 动态 SQL,这两种 SQL 在使用方式、运行机制和性能表现等方面各有特点 :

静态 SQL:静态 SQL 语句一般用于嵌入式 SQL 应用中,在程序运行前,SQL 语句必须是确定的,例如 SQL 语句中涉及的列名和表名必须是存在的。静态 SQL 语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时,数据库将直接执行编译好的 SQL 语句,降低运行时的开销。

动态 SQL:动态 SQL 语句是在应用程序运行时被编译和执行的,例如,使用 DB2 的交互式工具 CLP 访问数据库时,用户输入的 SQL 语句是不确定的,因此 SQL 语句只能被动态地编译。动态 SQL 的应用较多,常见的 CLI 和 JDBC 应用程序都使用动态 SQL。

静态sql:语句类型在编程时候必须是确定好的。比如

select * from employee where empno='abc' select * from employee where empno='12'

都必须是确定的,唯一可以变化的是abc的值。

动态sql:语句类型可以在运行期间指定,比如clp就是最典型的动态sql程序,你可以输入任何命令。

静态sql的存取路径是在运行前就确定好的,而动态sql的存取路径是在运行时动态生成的。因此生成的存取计划相对更优,但考虑到生成存取路径的开销,有可能应用程序的运行时间相对会比静态sql长些。

总结

到此这篇关于Mybatis4 之Mybatis动态sql的实现代码的文章就介绍到这了,更多相关mybatis动态sql内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

mybatis3.4.6中动态sql的处理与3.06有什么区别?

and c.id=#{id}

and b.id=#{oid}

and a.pay_time BETWEEN #{startDate} AND #{endDate}

service层如果参数为null,mybatis执行sql语句的时候就不会去拼接你指定的if标签中的sql语句

  • 本文相关:
  • mybatis动态sql之map参数的讲解
  • mybatis模糊查询和动态sql语句的用法
  • mybatis执行动态sql的方法
  • mybatis中动态sql,if,where,foreach的使用教程详解
  • mybatis动态sql中的trim标签的使用方法
  • mybatis动态sql之if、choose、where、set、trim、foreach标记实例详解
  • mybatis 执行动态 sql语句详解
  • mybatis 动态拼接sql字符串的问题
  • sql server连接失败错误及解决
  • access 数据类型与 ms sql 数据类型的相应
  • sql server无法生成fruncm线程的解决方法
  • sqlserver 根据地图经纬度计算距离差示例
  • sqlserver记录登录用户的登录时间(自写脚本)
  • 浅谈一次与sql注入 & webshell 的美丽“邂逅”
  • sql server 定时自动备份数据库的图文方法
  • java连接mysql数据库 java连接sql server数据库
  • 运行asp.net程序 报错:磁盘空间不足
  • n字符在sql server字段类型中的重要性概述
  • mybatis3.4.6中动态sql的处理与3.06有什么区别?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mssqlmybatis动态sql之map参数的讲解mybatis模糊查询和动态sql语句的用法mybatis执行动态sql的方法mybatis中动态sql,if,where,foreach的使用教程详解mybatis动态sql中的trim标签的使用方法mybatis动态sql之if、choose、where、set、trim、foreach标记实例详解mybatis 执行动态 sql语句详解mybatis 动态拼接sql字符串的问题sql server连接失败错误及解决access 数据类型与 ms sql 数据类型的相应sql server无法生成fruncm线程的解决方法sqlserver 根据地图经纬度计算距离差示例sqlserver记录登录用户的登录时间(自写脚本)浅谈一次与sql注入 & webshell 的美丽“邂逅”sql server 定时自动备份数据库的图文方法java连接mysql数据库 java连接sql server数据库运行asp.net程序 报错:磁盘空间不足n字符在sql server字段类型中的重要性概述sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据sql重复记录查询的几种方法win7系统安装sqlserver2000的详细sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sql server中通过reverse取某个最后一次出ubuntu 下安装sql server教程重命名sqlserver数据库的方法sql2000数据库的备份文件恢复到sql2005的sqlserver自动增长列引起的问题解决方法将sql server对象的当前拥有者更改成目标sql update 触发器 可获得被update的行的sql查询某列指定长度的字符串多余的用省略sql to sqlalchemy 转换的小例子sql server中的视图介绍
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved