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

国外开源网站建设软件新品上市怎么推广词

国外开源网站建设软件,新品上市怎么推广词,网站ui设计要点,给领导发网站建设可行性方案邮件怎么写一、前言 本人在学习mybatis的过程中遇到的一个让人不爽的bug,在查找了些相关的资料后得以解决,遂记录。 二、报错及解决 mapper中有一方法: Select("select * from emp " "where name like concat(%, #{name}, %) "…

一、前言

本人在学习mybatis的过程中遇到的一个让人不爽的bug,在查找了些相关的资料后得以解决,遂记录。

二、报错及解决

mapper中有一方法:

@Select("select * from emp " +"where name like concat('%', #{name}, '%') " +"and gender = #{gender} " +"and entrydate between #{begin} and #{end} " +"order by update_time desc")public List<Emp> list(String name,Short gender, LocalDate begin, LocalDate end);

测试方法:

 @Testpublic void testList() {String name = "张";Short gender = 1; // 假设1代表男性,0代表女性LocalDate begin = LocalDate.parse("2001-01-01");LocalDate end = LocalDate.parse("2023-12-31");List<Emp> empList = empMapper.list(name, gender, begin, end);// 遍历打印查询结果for (Emp emp : empList) {System.out.println(emp);}}

报错信息:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg3, arg2, arg1, arg0, param3, param4, param1, param2]

说是name参数找不到,靠。

原因:
在 MyBatis 中,当方法参数只有一个时,会使用基于位置的参数映射。这意味着 MyBatis 会将第一个参数与 SQL 查询语句中的第一个占位符进行匹配,以此类推。

然而,当方法参数超过一个时,MyBatis 就无法准确地确定每个参数应该映射到 SQL 查询语句中的哪个占位符。

大白话就是mybatis中方法参数为一个(可以是一个基本类型的参数或者是一个JavaBean)的时候,mybatis可以自动映射。有多个参数时需要一些措施让他成功映射。

解决方法:

1、使用 @Param 注解为方法参数指定名称:

@Select("select * from emp " +"where name like concat('%', #{name}, '%') " +"and gender = #{gender} " +"and entrydate between #{begin} and #{end} " +"order by update_time desc")
public List<Emp> list(@Param("name") String name, @Param("gender") Short gender, @Param("begin") LocalDate begin, @Param("end") LocalDate end);

在接口方法中使用 @Param 注解为每个参数指定名称,确保名称与 SQL 查询语句中的占位符名称匹配。

2、将参数包装在一个对象中:

创建一个包含所有查询参数的对象,例如 EmpQuery,并将该对象作为方法的参数:

@Select("select * from emp " +"where name like concat('%', #{name}, '%') " +"and gender = #{gender} " +"and entrydate between #{begin} and #{end} " +"order by update_time desc")
public List<Emp> list(EmpQuery query);

其中 EmpQuery 类包括 namegenderbeginend 等字段。

三、@Param

1、概述

首先明确这个注解是为SQL语句中参数赋值而服务的。

@Param的作用就是给参数命名,比如在mapper里面某方法A(int id),当添加注解后A(@Param("userId") int id),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。将参数值传如SQL语句中,通过#{userId}进行取值给SQL的参数赋值。

2、实例:

实例一:@Param注解基本类型的参数

public User selectUser(@Param("userName") String name,@Param("password") String pwd);

映射到xml中的标签

<select id="selectUser" resultMap="User">  select * from user  where user_name = #{userName} and user_password=#{password}  
</select>

实例二:@Param注解JavaBean对象

SQL语句通过@Param注解中的别名把对象中的属性取出来然后复制

mapper中的方法:

public List<User> getAllUser(@Param("user") User u);

映射到xml中的标签

<select id="getAllUser" parameterType="com.vo.User" resultMap="userMapper">  select   from user t where 1=1  and   t.user_name = #{user.userName}  and   t.user_age = #{user.userAge}  </select>  <!-- 不加@Param的话 -->
<select id="getAllUser" parameterType="com.vo.User" resultMap="userMapper">  select   from user t where 1=1  and   t.user_name = #{userName}  and   t.user_age = #{userAge}  </select>  

3、注意点
使用了@Param注解来声明参数的时候,SQL语句取值使用#{}${}取值都可以。

不使用@Param注解声明参数的时候,必须使用的是#{}来取参数。使用${}方式取值会报错。

不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。

参考文章:【详解】@Param注解的用法

http://www.dinnco.com/news/18150.html

相关文章:

  • 破解网站后台密码营销图片大全
  • 国外字体设计网站培训推广 seo
  • 响应式个人网站模板网络推广外包哪个公司做的比较好
  • 分析学生做网站网站seo推广多少钱
  • 上海市建设安全协会网站特种工容易被百度收录的网站
  • 杭州网站建设公司电话seo优化步骤
  • 天津网站建设制作系统必应搜索引擎
  • 我想做卖鱼苗网站怎样做seo公司seo教程
  • 本溪做网站的长尾关键词搜索网站
  • 重庆网站建设深圳债务优化公司
  • 一家做特卖的网站手机版嘉峪关seo
  • 公司简介网站怎么做淘宝推广哪种方式最好
  • 外贸网站做多少钱的深圳百度推广客服电话多少
  • 建设公司网站模版seo排名优化教程
  • 织梦做的网站要怎么放到浏览器图片外链生成器
  • 北京做养生SPA的网站建设网站软文代写
  • 做网站百度新闻源百度搜索广告收费标准
  • 如何做一名网站编辑网络营销的发展现状如何
  • 建设网站价位正规网络推广服务
  • 专业网站建设空间推广seo是什么意思
  • 承接电商网站建设推广引流最快的方法
  • 做装修的网站有哪些seo平台有哪些
  • 做网站网址大型集团网站建设公司
  • 深圳网站制作公司讯息绍兴seo计费管理
  • 做网站css百度大盘指数
  • 网站建设设计的流程搜索引擎营销优化的方法
  • 铁岭网站建设电脑优化大师下载安装
  • iis 网站压缩什么叫seo优化
  • 做网站送白酒厦门seo外包公司
  • 苗木网站素材天天网站