本文共 2436 字,大约阅读时间需要 8 分钟。
以前的sql如果你有3列数据,你要修改数据、那你就要写修改的第一列的,一二列的,一二三列的,这样操作很麻烦。
但是如果你用sql预处理的话他就会根据你输入你对象,来判断你要修改的参数,让sql变得很灵活。
注意事项!!
封装属性的时候 有一定不能用基本数据类型 要用封装数据类型
基本数据类型没有赋值的时候是零
封装数据类型 没有赋值的时候是null
if:
test 条件,可以取属性值或者参数 可以用and加入多个判断set:
update生成的,可以生成 set 关键字 还有就是去除最后逗号
-- 动态sql好处让sql变得灵活,修改他可以进行判断,根据你传入的对象的参数来判断你要修改的值 update kecheng -- 这里用《set》可以帮助你自动去除 逗号多参数是就有好处 where kid=#{kid}-- 这里要注意的是动态sql的值都是键值对,对象参数对应数据库的的的参数kname=#{kname},
trim:
去除或添加
suffixOverrides 末尾去除符号(如果你声明的话,他就会你最后的值后面加个,例如(name,)无法识别sql语句)
suffix 末尾添加符号
prefix 前面添加符号
prefixOverrides 前面去除符号
insert into student( -- 这里要注意取出末尾逗号,不取出的话如果你在插入时,如果你插入一个值不去除逗号他就会默认你后面还要插入会报sql语法错误 )values(-- 还要注意这些都是在括号中执行的address, sname, cid, ) #{address}, #{sname}, #{cid},
查询动态sql查询可以根据你选择的条件进行查询
ListseleStu(String sname,String address,Integer cid,Integer sid); //这里可以根据你输入的值来判断你要查询的值,不选择输入null就可以这里要注意要用封装数据类型,因为基本数据类型不为空,为0
如果上面动态查询中发生: Parameter 'uid' not found. Available parameters are [arg3, arg2, param5, arg5, arg1, arg0, param3, ] 错误
可以试试下面写法
and写前面<where>标记会自动去除and
转载地址:http://dluya.baihongyu.com/