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

网站平台建设专家意见深圳网站建设推广优化

网站平台建设专家意见,深圳网站建设推广优化,两个网站php 一个空间,电商会学着做网站呢MyBatis 中对占位符进行赋值的过程主要由 PreparedStatement 和参数处理器 (ParameterHandler) 协同完成。 1. SQL 语句中的占位符: MyBatis 支持两种占位符: # (预编译参数): 推荐使用。 MyBatis 会使用 PreparedStatement 的占位符 ? 来处理。PreparedStatemen…

MyBatis 中对占位符进行赋值的过程主要由 PreparedStatement 和参数处理器 (ParameterHandler) 协同完成。

1. SQL 语句中的占位符:

MyBatis 支持两种占位符:

  • # (预编译参数): 推荐使用。

    • MyBatis 会使用 PreparedStatement 的占位符 ? 来处理。
    • PreparedStatement 会对参数进行预编译和类型检查,可以防止 SQL 注入攻击。
    • 例如:SELECT * FROM user WHERE id = #{id}
  • $ (字符串替换): 不推荐,除非有特殊需求。

    • MyBatis 会直接将参数值替换到 SQL 语句中。
    • 存在 SQL 注入的风险。
    • 例如:SELECT * FROM user WHERE id = ${id}

2. 赋值流程 (以 # 占位符为例):

  1. 解析 SQL 语句:

    • MyBatis 解析 Mapper XML 文件或注解中的 SQL 语句。
    • 将 SQL 语句中的 # 占位符替换为 ?
    • 例如,将 SELECT * FROM user WHERE id = #{id} AND name = #{name} 转换为 SELECT * FROM user WHERE id = ? AND name = ?
  2. 创建 PreparedStatement:

    • MyBatis 使用 JDBC 的 Connection 对象创建 PreparedStatement 对象。
  3. 获取参数值:

    • MyBatis 根据参数的名称或位置,从以下来源获取参数值:
      • 单个参数: 如果只有一个参数,可以直接传入。
      • 多个参数:
        • 使用 @Param 注解: 可以通过 @Param 注解为参数指定名称。
        • 使用 Map: 可以将参数放入 Map 中,键为参数名称,值为参数值。
        • 使用 JavaBean: 可以将参数封装到 JavaBean 中,属性名与参数名称对应。
        • 按参数顺序 如果没有@Param注解, 也没有使用Map, 则按照参数定义的顺序.
      • 如果是基本类型包装类, 会自动进行拆箱.
    • MyBatis 会根据配置的类型处理器 (TypeHandler),将 Java 对象转换为 JDBC 类型。
  4. 设置参数值:

    • MyBatis 使用 PreparedStatementsetXXX 方法(如 setIntsetStringsetDouble 等),根据参数的类型和位置,将参数值设置到 PreparedStatement 的占位符中。
    • 会根据配置的 TypeHandler 将 Java 类型转换为 JDBC 类型。
  5. 执行 SQL 语句:

    • MyBatis 执行 PreparedStatementexecuteQueryexecuteUpdateexecute 方法,执行 SQL 语句。

示例:

Mapper XML:

<select id="getUserById" resultType="User">SELECT * FROM user WHERE id = #{id} AND name = #{name}
</select>

Mapper 接口:

import org.apache.ibatis.annotations.Param;public interface UserMapper {User getUserById(@Param("id") int id, @Param("name") String name);
}

Java 代码:

// ... 获取 SqlSession
User user = sqlSession.getMapper(UserMapper.class).getUserById(1, "John");

执行流程:

  1. MyBatis 解析 getUserById 方法的 SQL 语句,将 # 占位符替换为 ?,得到 SELECT * FROM user WHERE id = ? AND name = ?
  2. MyBatis 创建 PreparedStatement 对象。
  3. MyBatis 从方法参数中获取 id (值为 1) 和 name (值为 “John”)。
  4. MyBatis 使用 PreparedStatementsetInt(1, 1)setString(2, "John") 方法,将参数值设置到占位符中。
  5. MyBatis 执行 PreparedStatementexecuteQuery 方法,执行 SQL 语句,并将结果映射为 User 对象。

ParameterHandler:

  • ParameterHandler 是 MyBatis 中负责处理参数设置的接口。
  • 默认实现类是 DefaultParameterHandler
  • DefaultParameterHandler 会根据参数的类型和配置的 TypeHandler,选择合适的 PreparedStatement.setXXX 方法来设置参数值。

TypeHandler:

  • TypeHandler 是 MyBatis 中负责 Java 类型和 JDBC 类型之间转换的接口。
  • MyBatis 内置了许多 TypeHandler,用于处理常见的类型转换。
  • 可以自定义 TypeHandler 来处理特殊的类型转换。

总结:

MyBatis 通过 PreparedStatement 和参数处理器 (ParameterHandler) 来实现对占位符的赋值。 它支持 #(预编译参数)和 $(字符串替换)两种占位符,推荐使用 # 占位符,以防止 SQL 注入攻击。 MyBatis 会根据参数的类型和配置的 TypeHandler,将 Java 对象转换为 JDBC 类型,并使用 PreparedStatementsetXXX 方法将参数值设置到占位符中。


文章转载自:

http://iQRJICVK.tdxLj.cn
http://E0AVugJe.tdxLj.cn
http://LQR7cjj2.tdxLj.cn
http://dsRo45zC.tdxLj.cn
http://ke499Fce.tdxLj.cn
http://RBVfTXnP.tdxLj.cn
http://xlcsZRuY.tdxLj.cn
http://fwTOKb6N.tdxLj.cn
http://hqMDoilA.tdxLj.cn
http://10J8qW3V.tdxLj.cn
http://DGPfnUW7.tdxLj.cn
http://k62YnulK.tdxLj.cn
http://yxe3li8h.tdxLj.cn
http://C0KwIuyS.tdxLj.cn
http://BqYY4TYC.tdxLj.cn
http://sHW0qfID.tdxLj.cn
http://6bWsSvVt.tdxLj.cn
http://TnDylZpg.tdxLj.cn
http://uXeg0Cw6.tdxLj.cn
http://2HNMJv5h.tdxLj.cn
http://5CDd2waQ.tdxLj.cn
http://Hx0xp9l8.tdxLj.cn
http://yymoRttF.tdxLj.cn
http://B71jwB46.tdxLj.cn
http://f4KLeJ5X.tdxLj.cn
http://aG846BWw.tdxLj.cn
http://hRhyxUK1.tdxLj.cn
http://zhf5ceGe.tdxLj.cn
http://r1LXBbrF.tdxLj.cn
http://ZXXJSHxC.tdxLj.cn
http://www.dtcms.com/wzjs/628403.html

相关文章:

  • 揭阳做网站的佛山专业网站设计方案
  • 网站建设培训视频工程机械网
  • wordpress+视频站模版wordpress live chat
  • 网站页面好了怎么做后端怎么彻底删除2345网址导航
  • 深圳大型网络科技公司什么是seo网站优化
  • 网站常规seo优化步骤今天足球赛事推荐
  • 网站开发流程进度规划wordpress保存502
  • 建一个类似京东的网站游戏开发学什么专业
  • 网站开发最快的语言广东东莞人才网招聘网
  • 做外贸营销网站电子商务公司名字推荐
  • 电子工程职业学院官网宁波seo网络推广选哪家
  • 做网站建设要学多久搜索引擎的工作原理是什么
  • 2万块建一个网站贵吗网页设计培训学费多少
  • 廊坊建站服务做网站可以卖别的牌子的产品吗
  • 简单的网站设计开发wordpress short code
  • 网站服务器配置单较便宜的网站建设
  • 无锡网站建设原则网站建设预算项目
  • 徐州做网站哪个好有哪个理财网站是专门做汽车抵押的
  • 购物商城网站的运营用服务器做网站空间
  • 邹城网站制作wordpress优酷自适应
  • 做投融资平台的网站都有哪些360安全导航网址
  • 阿里云可以做电商网站吗wordpress 会议
  • 网站建设与维护的重要性锐酷网站建设教程
  • 如何用模板建设网站做网站有哪些费用
  • 一起做网店网站哪里进货的如何常看wordpress默认编辑器
  • 宁夏水利建设工程网站企业展厅设计公司图片
  • 网站建设微信开发沈阳医疗网站建设
  • 国网公司网站签名在线生成器
  • 顺德网站制作常州网站制作多少钱
  • 铭万做网站怎么样高清vga视频线