Mybatis开发中遇到的问题解决

1. MyBatis中sql语句的空值处理,需要指定JdbcType

  • 说明: 在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。

  • 解决方法

		select *
		from student
		where name =  #{name,jdbcType=VARCHAR}

2.Mybatis动态查询时,出现传入有值,数据库有值,SQL语句正确,数据查不出来的现象

  • 说明:Mybatis处理查询参数时有一个默认的处理规则,造成动态查询时,传入有值,数据库有值,SQL语句正确,数据查不出来的现象
  • 解决:
  • 1、此时需要明确指出查询参数是什么,在mapper接口层,通过@param()就可以实现
  • 2、如果SQL语句中存在连接查询,看看条件是否正确,是否满足,若有一个条件不满足而导致这个数据表连接不到,产生null,则返回的结果也有可能为null

例子:
mapper.xml中的代码

<select id="queryByField" resultType="List" parameterType="String">
    SELECT 
         <include refid="Base_Column_List" />
    FROM wady_admin_user_role
      WHERE id = #{id}
</select>

对应的mapper接口中的代码

List<Student>  queryByField(@param("id")  Long  id);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值