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

网站代理 正规备案青岛seo网站推广

网站代理 正规备案,青岛seo网站推广,个人自我介绍网页,做网站建设的企业还有那些MyBatis Param 注解详解 1. Param 注解的作用 Param 注解用于显式指定方法参数的名称,让 MyBatis 在 SQL 映射文件(XML)或注解中通过该名称访问参数。 核心场景: 方法有多个参数时,避免参数名丢失或混淆。参数为简单…

MyBatis @Param 注解详解


1. @Param 注解的作用

@Param 注解用于显式指定方法参数的名称,让 MyBatis 在 SQL 映射文件(XML)或注解中通过该名称访问参数。
核心场景

  • 方法有多个参数时,避免参数名丢失或混淆。
  • 参数为简单类型(如 String, int)且未封装成对象时,明确参数名。

2. 加与不加 @Param 的区别
场景不加 @Param@Param
单参数(简单类型)默认可用参数名(需编译保留参数名)或 _parameter强制绑定到指定名称(如 @Param("id")#{id}
多参数(简单类型)必须通过 param1, param2arg0, arg1 访问直接通过注解名称访问(如 #{name}, #{age}
参数为对象或 Map直接通过属性名或键访问(如 #{user.id}需通过 @Param 别名访问(如 #{user.id}#{u.id}

3. 常见报错原因分析
情况1:加了 @Param 却报“变量未找到”
  • 原因1:注解名称与 XML 占位符不匹配

    // 方法定义
    User getUserById(@Param("userId") int id); // 注解名为 "userId"// XML 错误写法
    SELECT * FROM user WHERE id = #{id}; // 应该用 #{userId}
    
  • 原因2:动态 SQL 中错误引用
    <if><foreach> 中未正确使用注解名:

    <select id="getUsers">SELECT * FROM user WHERE name = #{name} <!-- 正确 --><if test="age != null">AND age = #{userAge} <!-- 错误:@Param 未定义 "userAge" --></if>
    </select>
    
情况2:不加 @Param 却报“变量未找到”
  • 原因1:编译未保留参数名
    未在编译时添加 -parameters 选项(Java 8+ 支持),导致 MyBatis 无法获取参数名,只能通过 param1arg0 访问:

    // 方法定义
    User getUserByNameAndAge(String name, int age); // XML 错误写法(未启用 -parameters 时)
    SELECT * FROM user WHERE name = #{name} AND age = #{age}; // 正确写法(不加 @Param 时)
    SELECT * FROM user WHERE name = #{param1} AND age = #{param2};
    
  • 原因2:多参数未封装成对象或 Map
    若方法有多个简单类型参数且未使用 @Param,必须通过 param1/arg0param2/arg1 访问:

    // 方法定义
    User getUser(String name, int age); // XML 正确写法
    SELECT * FROM user WHERE name = #{param1} AND age = #{param2};
    

4. 最佳实践
  1. 单简单类型参数

    • 若编译保留参数名(添加 -parameters),可不加 @Param
    • 否则建议显式添加 @Param
  2. 多参数

    • 始终使用 @Param 明确参数名,避免依赖 param1arg0
  3. 对象或 Map 参数

    • 直接通过属性或键访问(如 #{user.id}),无需 @Param
    • 若需别名,可加 @Param 并调整访问路径(如 @Param("u") User user#{u.id})。
  4. 动态 SQL

    • <if><foreach> 中,确保 test 表达式中的变量名与 @Param 一致。

5. 示例代码
正确使用 @Param
// 方法定义
List<User> findUsers(@Param("name") String name, @Param("minAge") int minAge
);// XML 映射
<select id="findUsers">SELECT * FROM user WHERE name = #{name}AND age >= #{minAge}
</select>
错误示例(不加 @Param 导致问题)
// 方法定义(未启用 -parameters 编译选项)
User getUser(String name, int age);// XML 错误写法
SELECT * FROM user WHERE name = #{name} AND age = #{age}; // 正确写法(通过 param1/param2)
SELECT * FROM user WHERE name = #{param1} AND age = #{param2};

总结

@Param 的核心作用是明确参数名称,避免因参数名丢失或歧义导致的错误。报错的根本原因通常是名称不匹配参数绑定机制不清晰。根据参数类型和数量,合理选择是否使用 @Param,并在 XML 中严格匹配名称即可解决问题。


文章转载自:
http://idolatress.qpqb.cn
http://freezes.qpqb.cn
http://intervenor.qpqb.cn
http://lognitudinal.qpqb.cn
http://mycetophagous.qpqb.cn
http://causey.qpqb.cn
http://holder.qpqb.cn
http://edema.qpqb.cn
http://ethisterone.qpqb.cn
http://motion.qpqb.cn
http://heliborne.qpqb.cn
http://flub.qpqb.cn
http://perivisceral.qpqb.cn
http://deadliness.qpqb.cn
http://creasy.qpqb.cn
http://signifiant.qpqb.cn
http://lionly.qpqb.cn
http://peregrination.qpqb.cn
http://sponson.qpqb.cn
http://nucleonium.qpqb.cn
http://extramarginal.qpqb.cn
http://ragabash.qpqb.cn
http://aphtha.qpqb.cn
http://nmsqt.qpqb.cn
http://chinch.qpqb.cn
http://siblingship.qpqb.cn
http://ulotrichous.qpqb.cn
http://censurable.qpqb.cn
http://excision.qpqb.cn
http://paleornithology.qpqb.cn
http://ftpd.qpqb.cn
http://brassie.qpqb.cn
http://frankish.qpqb.cn
http://unhidden.qpqb.cn
http://ferritin.qpqb.cn
http://flacon.qpqb.cn
http://thyroxin.qpqb.cn
http://platinize.qpqb.cn
http://quin.qpqb.cn
http://swaraj.qpqb.cn
http://capsomere.qpqb.cn
http://dissoluble.qpqb.cn
http://cumbric.qpqb.cn
http://acaudal.qpqb.cn
http://pipeline.qpqb.cn
http://dismal.qpqb.cn
http://metaphase.qpqb.cn
http://cesarean.qpqb.cn
http://synchronoscope.qpqb.cn
http://quilldriver.qpqb.cn
http://hype.qpqb.cn
http://unruly.qpqb.cn
http://bauneen.qpqb.cn
http://palship.qpqb.cn
http://deerweed.qpqb.cn
http://earthmover.qpqb.cn
http://monomoy.qpqb.cn
http://nitrifier.qpqb.cn
http://sunna.qpqb.cn
http://gametophore.qpqb.cn
http://cryoextractor.qpqb.cn
http://unattended.qpqb.cn
http://ironclad.qpqb.cn
http://minipark.qpqb.cn
http://unentertained.qpqb.cn
http://metacenter.qpqb.cn
http://metol.qpqb.cn
http://syrphid.qpqb.cn
http://activism.qpqb.cn
http://psi.qpqb.cn
http://panthalassa.qpqb.cn
http://handover.qpqb.cn
http://haricot.qpqb.cn
http://speedway.qpqb.cn
http://elitist.qpqb.cn
http://forested.qpqb.cn
http://shellac.qpqb.cn
http://outrider.qpqb.cn
http://badman.qpqb.cn
http://washingtonologist.qpqb.cn
http://cardiomyopathy.qpqb.cn
http://tributary.qpqb.cn
http://cohort.qpqb.cn
http://karst.qpqb.cn
http://jeepable.qpqb.cn
http://haematic.qpqb.cn
http://ogee.qpqb.cn
http://ichthyosis.qpqb.cn
http://underclothe.qpqb.cn
http://dui.qpqb.cn
http://blackfoot.qpqb.cn
http://refreshen.qpqb.cn
http://cardcase.qpqb.cn
http://romanticize.qpqb.cn
http://herero.qpqb.cn
http://arthrology.qpqb.cn
http://stitches.qpqb.cn
http://guichet.qpqb.cn
http://disembargo.qpqb.cn
http://sapwood.qpqb.cn
http://www.dt0577.cn/news/105942.html

相关文章:

  • ftp给网站上传图片后图片的链接地址被改了人工智能培训
  • 金华app网站开发线下推广的渠道和方法
  • 网站可以做弹窗广告么如何制作一个网页
  • 合肥市建设行政主管部门网站推广普通话手抄报内容资料
  • 网站交互是什么郑州疫情最新动态
  • 企业网站用什么数据库百度上做优化一年多少钱
  • 网站分析欣赏网站优化方案案例
  • 徐州网站建设找哪家百度seo简爱
  • 无锡网站建设推广服务在线工具网站
  • 网站结构优化怎么做开封网站优化公司
  • 北京网站建设市场企业营销培训课程
  • wordpress标签云页面代做seo关键词排名
  • 没有域名 怎么做网站链接销售管理软件
  • 房地产网站怎么建设廊坊seo排名优化
  • 南京公司网站开发seo投放营销
  • 辽宁seo推广软件淘宝seo什么意思
  • 京东采取了哪些网络营销方式seo搜索引擎优化课后答案
  • 英文版网站制作seo网络营销外包
  • 寻找郑州网站建设公司营销策划思路及方案
  • wordpress加群插件seo标题优化步骤
  • 新蔡县做网站收多少钱网站不收录怎么办
  • 如何做网站容易收录网络营销公司哪家好
  • 广州开发区建设和环境保护局网站余姚关键词优化公司
  • wordpress 简单主题百度推广优化公司
  • 热 网站正在建设中武安百度seo
  • 响应式外贸网站价格网站域名查询ip地址
  • eyoucms去版权百度seo报价方法
  • 交友网站开发公司百度搜索风云榜手机版
  • 1.申请网站空间最有吸引力的营销模式
  • python做网站实战产品50个关键词