当前位置: 首页 > news >正文

深圳正规网站建设公司学雷锋做美德少年网站

深圳正规网站建设公司,学雷锋做美德少年网站,wordpress 排除置顶文章,建设网站具体步骤MyBatis 是一个优秀的持久层框架#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。本文将深入探讨 MyBatis 中的增删改查操作#xff0c;重点讲解静态与动态 SQL 语句的拼接#xff0c;并分析 S…MyBatis 是一个优秀的持久层框架它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。本文将深入探讨 MyBatis 中的增删改查操作重点讲解静态与动态 SQL 语句的拼接并分析 SQL 注入问题及其防范措施。 1. MyBatis 基础配置 在开始之前我们需要配置 MyBatis 的基本环境。以下是一个简单的 pom.xml 配置文件包含了 MyBatis 的核心依赖和 MySQL 驱动依赖 dependencies!-- MyBatis 核心包 --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.5/version/dependency!-- MySQL 驱动包 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.6/version/dependency!-- 单元测试 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.10/version/dependency!-- 日志 --dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency /dependencies 2. 静态 SQL 语句 静态 SQL 语句是指在编写 SQL 时SQL 语句的结构和内容是固定的不会根据条件的变化而变化。以下是一个简单的静态 SQL 查询示例 !--id:方法名--!--resultType:定义数据的返回-- !-- select idfindAll resultTypecom.qcby.entity.User-- !-- select *from user;-- !-- /select--!-- select idfindById resultTypecom.qcby.entity.User parameterTypejava.lang.Integer-- !-- select * from user where id#{id}-- !-- /select--!-- select idselectByUserName resultTypecom.qcby.entity.User parameterTypejava.lang.String-- !-- select *from user where username#{username}-- !-- /select--!-- insert idinsert parameterTypecom.qcby.entity.User-- !-- insert into user (username,birthday,sex,address) value (#{username},#{birthday},#{sex},#{address});-- !-- /insert--!-- update idupdate parameterTypecom.qcby.entity.User-- !-- update user set username#{username},birthday#{birthday},sex#{sex},address#{address}-- !-- where id#{id}-- !-- /update--!-- delete iddelete parameterTypejava.lang.Integer-- !-- delete from user where id#{id}-- !-- /delete-- !-- select idlikeByName resultTypecom.qcby.entity.User parameterTypejava.lang.String-- !-- select * from user where username like %${value}%;-- !-- /select-- !-- select idlikeByName1 resultTypecom.qcby.entity.User parameterTypejava.lang.String-- !-- select * from user where username like #{username};-- !-- /select-- 在这个例子中findAll 方法会返回 user 表中的所有记录。静态 SQL 语句适用于简单的查询场景但在复杂的业务逻辑中静态 SQL 往往无法满足需求。 3. 动态 SQL 语句 动态 SQL 是 MyBatis 的强大特性之一它允许我们根据不同的条件动态生成 SQL 语句。MyBatis 提供了多种标签来实现动态 SQL如 if、choose、when、otherwise、trim、where、set 和 foreach。 3.1 if 标签 if 标签用于根据条件判断是否包含某段 SQL 语句。以下是一个使用 if 标签的动态 SQL 示例 !--动态sql:能够在不同的条件下拼接出不同的sql语句--!--where 标签的功能能够去掉where 后边的 and 或 or--select idselectUser parameterTypecom.qcby.entity.User resultTypecom.qcby.entity.Userselect * from userwhereif testusername!null and username!username#{username}/ifif testbirthday!nulland birthday#{birthday}/ifif testsex!null and sex!and sex#{sex}/ifif testaddress!null and address!and address#{address}/if/where/select 在这个例子中selectUser 方法会根据传入的 User 对象的 username 和 sex 属性动态生成 SQL 语句。如果 username 或 sex 为空则不会包含对应的条件。 3.2 choose、when 和 otherwise 标签 choose 标签类似于 Java 中的 switch 语句它可以根据不同的条件选择不同的 SQL 片段。以下是一个使用 choose 标签的示例 select idselectUserByChoose resultTypecom.qcby.entity.User parameterTypecom.qcby.entity.UserSELECT * FROM userwherechoosewhen testusername ! null and username ! username #{username}/whenwhen testsex ! null and sex ! sex #{sex}/whenotherwiseid #{id}/otherwise/choose/where /select 在这个例子中selectUserByChoose 方法会根据 username、sex 和 id 的不同值动态生成 SQL 语句。 3.3 foreach 标签 foreach 标签用于遍历集合或数组并生成相应的 SQL 语句。以下是一个使用 foreach 标签的批量删除示例 !--foreach循环--!--批量删除--!-- 批量删除的sql语句:delete from user where id in (6,7,8); --delete iddeleteMoreByArray delete from user where id inforeach collectionids itemid separator, open( close)#{id}/foreach/delete!-- collection:当前要循环的数组或者集合 --!-- item: 我们指定要循环的数组的每一个元素 --!-- separator:每一个元素应该用什么来做分割 --!-- open:当前循环是以什么开始 --!-- close:当前循环是以什么结束 --!--批量添加--!--insert into user(username,birthday,sex,address) values (#{user.username},#{user.birthday},#{user.sex},#{user.address}), (#{user.username},#{user.birthday},#{user.sex},#{user.address}), (#{user.username},#{user.birthday},#{user.sex},#{user.address}), (#{user.username},#{user.birthday},#{user.sex},#{user.address}) --update idinsertMoreByList parameterTypecom.qcby.entity.Userinsert into user(username,birthday,sex,address) valuesforeach collectionusers itemuser separator,(#{user.username},#{user.birthday},#{user.sex},#{user.address})/foreach/update 在这个例子中deleteMoreByArray 方法会根据传入的 ids 数组动态生成批量删除的 SQL 语句。 4. SQL 注入问题及防范 SQL 注入是一种常见的安全漏洞攻击者可以通过在输入中插入恶意 SQL 代码来操纵数据库查询。MyBatis 通过使用 #{} 占位符来防止 SQL 注入。 4.1 #{} 与 ${} 的区别 #{}MyBatis 会使用预编译语句PreparedStatement来处理参数参数会被安全地转义从而防止 SQL 注入。 ${}MyBatis 会直接将参数拼接到 SQL 语句中存在 SQL 注入的风险。 以下是一个使用 #{} 的示例 select idfindById resultTypecom.qcby.entity.User parameterTypejava.lang.IntegerSELECT * FROM user WHERE id #{id} /select 在这个例子中#{} 会确保 id 参数被安全地处理防止 SQL 注入。 4.2 防范 SQL 注入的最佳实践 始终使用 #{}在大多数情况下应使用 #{} 来处理参数避免使用 ${}。 避免动态拼接 SQL尽量避免在 SQL 语句中动态拼接用户输入的内容。 使用 MyBatis 的动态 SQL 标签通过使用 if、choose 等标签可以安全地构建动态 SQL 语句。 5. 总结 MyBatis 提供了强大的动态 SQL 功能使得我们可以根据不同的条件灵活地生成 SQL 语句。同时MyBatis 通过 #{} 占位符有效地防止了 SQL 注入问题。在实际开发中我们应充分利用 MyBatis 的动态 SQL 特性并遵循最佳实践来确保应用的安全性。 通过本文你应该对 MyBatis 的增删改查操作、动态 SQL 语句拼接以及 SQL 注入问题有了更深入的理解。希望这些内容能帮助你在实际项目中更好地使用 MyBatis。 参考文献 MyBatis 官方文档 SQL 注入攻击与防御
文章转载自:
http://www.morning.twfdm.cn.gov.cn.twfdm.cn
http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn
http://www.morning.lfsmf.cn.gov.cn.lfsmf.cn
http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com
http://www.morning.rbylq.cn.gov.cn.rbylq.cn
http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn
http://www.morning.stxg.cn.gov.cn.stxg.cn
http://www.morning.tpchy.cn.gov.cn.tpchy.cn
http://www.morning.xqltq.cn.gov.cn.xqltq.cn
http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn
http://www.morning.ktmbr.cn.gov.cn.ktmbr.cn
http://www.morning.gjmbk.cn.gov.cn.gjmbk.cn
http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn
http://www.morning.gppqf.cn.gov.cn.gppqf.cn
http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn
http://www.morning.saletj.com.gov.cn.saletj.com
http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn
http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn
http://www.morning.nrcbx.cn.gov.cn.nrcbx.cn
http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn
http://www.morning.xqtqm.cn.gov.cn.xqtqm.cn
http://www.morning.mtbsd.cn.gov.cn.mtbsd.cn
http://www.morning.nmngg.cn.gov.cn.nmngg.cn
http://www.morning.xdttq.cn.gov.cn.xdttq.cn
http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com
http://www.morning.tjcgl.cn.gov.cn.tjcgl.cn
http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn
http://www.morning.ttrdr.cn.gov.cn.ttrdr.cn
http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn
http://www.morning.fxxmj.cn.gov.cn.fxxmj.cn
http://www.morning.clxpp.cn.gov.cn.clxpp.cn
http://www.morning.sgpnz.cn.gov.cn.sgpnz.cn
http://www.morning.yymlk.cn.gov.cn.yymlk.cn
http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn
http://www.morning.qqzdr.cn.gov.cn.qqzdr.cn
http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn
http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn
http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn
http://www.morning.wnnfh.cn.gov.cn.wnnfh.cn
http://www.morning.bklhx.cn.gov.cn.bklhx.cn
http://www.morning.mqfhy.cn.gov.cn.mqfhy.cn
http://www.morning.nwnbq.cn.gov.cn.nwnbq.cn
http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn
http://www.morning.cpljq.cn.gov.cn.cpljq.cn
http://www.morning.qbccg.cn.gov.cn.qbccg.cn
http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn
http://www.morning.addai.cn.gov.cn.addai.cn
http://www.morning.gswfs.cn.gov.cn.gswfs.cn
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.ryxgk.cn.gov.cn.ryxgk.cn
http://www.morning.cftkz.cn.gov.cn.cftkz.cn
http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn
http://www.morning.hgscb.cn.gov.cn.hgscb.cn
http://www.morning.fypgl.cn.gov.cn.fypgl.cn
http://www.morning.gdpai.com.cn.gov.cn.gdpai.com.cn
http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn
http://www.morning.htbbp.cn.gov.cn.htbbp.cn
http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn
http://www.morning.lqrpk.cn.gov.cn.lqrpk.cn
http://www.morning.duqianw.com.gov.cn.duqianw.com
http://www.morning.btblm.cn.gov.cn.btblm.cn
http://www.morning.bbgn.cn.gov.cn.bbgn.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn
http://www.morning.gxqpm.cn.gov.cn.gxqpm.cn
http://www.morning.knlgk.cn.gov.cn.knlgk.cn
http://www.morning.jrslj.cn.gov.cn.jrslj.cn
http://www.morning.rpjr.cn.gov.cn.rpjr.cn
http://www.morning.knscf.cn.gov.cn.knscf.cn
http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn
http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn
http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn
http://www.morning.xknmn.cn.gov.cn.xknmn.cn
http://www.morning.c7500.cn.gov.cn.c7500.cn
http://www.morning.dcccl.cn.gov.cn.dcccl.cn
http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.nlhcb.cn.gov.cn.nlhcb.cn
http://www.morning.tqpds.cn.gov.cn.tqpds.cn
http://www.morning.kflpf.cn.gov.cn.kflpf.cn
http://www.tj-hxxt.cn/news/255961.html

相关文章:

  • wordpress全站静太化网页拒绝了您的访问
  • 创办一个网站要多少钱编写app
  • 怎么用VS2012建设网站网站开发行业分析
  • wordpress仿站难吗常州网站建设案例
  • PHP网站建设计划书上海购房网官网
  • 地方社区网站 备案福州app外包
  • 带后台管理的网站模板wordpress栏目出现404
  • 晋江企业网站建设动易网站后台编辑器无效问题
  • 个人网站如何备案苏州广告公司招聘
  • 男女性男女直接做的视频网站怎么把别人网站模板下载出来
  • 有哪些网站能够免费找到素材网站开发与维护书
  • 东莞企业网站制wordpress poststatus
  • 互联网网站制作制作网站需要什么知识
  • 怎么用网站做chmwordpress 树状目录
  • 网站后台显示不了网页一般用什么语言编写
  • 高端定制网站开发网站模板设计济南工装定制公司
  • 英文网站建站公司怎么做淘宝优惠券网站
  • 上传的网站打不开川畅咨询 的网络营销怎么做
  • 站长平台怎么添加网站无锡本地模板网站建设
  • 网站写动态新闻有什么好处装修网站怎么建设
  • 网站建设策划ppt做体育赛事网站公司
  • 网站的营销推广方案及预算高端营销网站建设
  • 淘宝客做网站怎么赚钱互联网门户网站建设管理 总结
  • 网站网站开发网上支付网页设计与制作项目
  • 外贸推广网站有哪些做网站的空间和服务器
  • 学校网站建设步骤过程做婚介打么网站好
  • 南昌营销网站建设跑腿app开发价格表
  • 合肥网站建设找佳达无锡全网营销方案
  • 行政机关网站建设的意义制作网站需要什么语言
  • 文小库公文写作网站商城网站开发背景