1.org.apache.ibatis.binding.BindingException: Parameter 'username' not found
场景描述:在与别人对接的是否,之前我习惯根据对方发来的json串来建立pojo,然后直接用这个实体类(也就是Bean对象)来接收对方发来的数据,直接把数据库查询到的数据return给对方。有一次我需要拿其中两个条件传入持久层,也就是多参传入,但是后台一直提示如上属性未绑定,明明实体类里我加上了,原因是因为如果只是传入一个实体类到持久层完全没有问题,但对于多参传入,mybatis不会自动帮你匹配,需要在Dao层接口处加@Param("username"),比如:
User selectUsername(@Param("username")String username,
@Param("password")String password);
然后持久层是这样的
<select id=" selectUser" resultMap="BaseResultMap">
select * from tableName where user_name = #{username} and user_password=#{password}
</select>
那如果我写成这样呢?
User selectUsername(@Param("name")String username,@Param("pwd")String password);
那么持久层则为:
<select id=" selectUser" resultMap="BaseResultMap">
select * from tableName where user_name = #{name} and user_password=#{pwd}
</select>
对于单一属性的传入,注意:采用#{}的方式把@Param注解括号内的参数进行引用(括号内参数对应的是形参如?name对应的是username)
2.在MyBatis中的特殊符号对应写法
常用的如下(其中的分号不可缺少)
第一种写法:
原符号 < <= > >= & ' "
替换符号 < <= > >= & ' "
例如:sql如下:
create_date_time >= #{startTime} and create_date_time <= #{endTime}
第二种写法
大于等于 小于等于
<![CDATA[ >= ]]> <![CDATA[ <= ]]>
例如:sql如下:
create_date_time <![CDATA[ >= ]]> #{startTime} and create_date_time <![CDATA[ <= ]]> #{endTime}
3.java.lang.IllegalStateException: Failed to load property source from location ‘classpath:/application.yml
说明是application.yml文件与项目的编码格式不匹配
yml文件的编码格式在右下角,
项目的编码格式在File-Settings,
两边编码一致后就不会报错了。
4.待定
|