书写动态sql

一、动态sql

动态SQL是指在程序运行期间根据不同的条件动态生成SQL语句。使用动态SQL时,可以根据不同的条件、情况来拼接、调整SQL语句的结构和内容,以实现更加灵活的查询和更新操作。

二、动态SQL适用于以下场景:

1.SQL语句比较复杂,根据不同的参数条件进行拼接;

2.具有更高的安全性要求,需要对参数进行验证和转义处理;

3.执行效率比较低,不需要频繁执行某个SQL语句。

三、书写动态SQL的几种方式:

1、许多动态sql的书写使用条件来动态拼接的

例如: stingbuilder s = "Select * from User  where   1=1" 其中1=1是展位条件,对sql的查询没有影响;

if(条件.Contains(Name)){ s.append(“ and Name = 条件[Name] ) }

if(条件.Contains(age)){ s.append(“ and Name = 条件[age] ) }

if(条件.Contains(address)){ s.append(“ and Name = 条件[address] ) }

拼接完整就是:Select * from User  where   1=1 and Name = 'XXName' and age= 'XXage'  and address= 'XXaddress'和普通的sql拼接没啥两样,执行起来需要每个条件进行判断,效率明显不是很高

2、利用动态类型书写sql,避免每个条件进行判断,根据传参进行动态执行sql,可适配不同参数个数的执行,是另一种多态形式:
1.接口写成bool update(dynamic fields)
2.接口实现类似下图
3.web中调用dynamic fields=new systerm.dynamic.expandoObject()
4.增添动态字段fields.OrganizeID=5,fields.Leader=7然后调用接口即可 ​​​

3.以上是在C#中书写动态sql的方式;记得在Java中是用xml实现动态sql

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_nanda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值