zoukankan      html  css  js  c++  java
  • [MyBatis]org.apache.ibatis.binding.BindingException的避免

    我遇到的org.apache.ibatis.binding.BindingException问题是因为Mapper.java中接口和SQL的参数多于一个,Mybatis不知道如何一一对应,解决方法是加上@param注解,手动告诉MyBatis如何去对应。代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.hy.mapper.SweepawayMapper">
     
         <select id="selectCleanExpiredParams" resultType="java.lang.String">
            select name||':'||value from Clean_Expired_Params order by sort
        </select>
     
        <select id="findTableExist"  resultType="integer">
            SELECT COUNT (*) as cnt FROM ALL_TABLES WHERE table_name = UPPER(#{tableName})
        </select>
        
        <select id="getAllExpiredCount"  resultType="integer">
            SELECT COUNT (*) as cnt from ${tableName} where created_datetime&lt;to_date(#{date},'yyyy-MM-dd') 
        </select>
        
        <select id="getExpiredCount"  resultType="integer">
            SELECT COUNT (*) as cnt from ${tableName} where created_datetime&lt;to_date(#{date},'yyyy-MM-dd')  AND ROWNUM&lt;#{rowNum}
        </select>
        
        <delete id="sweepAwayExpired">
            delete from ${tableName} where created_datetime&lt;to_date(#{date},'yyyy-MM-dd') AND ROWNUM&lt;#{rowNum}
        </delete>  
      
    </mapper>

    而接口的写法是:

    package com.hy.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Param;
    
    @MyMapper
    public interface SweepawayMapper {
        List<String> selectCleanExpiredParams();
        int findTableExist(String tableName);// 一个参数MyBati能认出来
        int getAllExpiredCount(@Param("tableName") String tableName,@Param("date") String date);// 多个参数得告诉MyBatis如何区分
        int getExpiredCount(@Param("tableName") String tableName,@Param("date") String date,@Param("rowNum") int rowNum);
        int sweepAwayExpired(@Param("tableName") String tableName,@Param("date") String date,@Param("rowNum") int rowNum);
    }

    --END-- 19/10/17 8:21

  • 相关阅读:
    Java基础--线程创建方式
    Java基础--static关键字
    Java基础--异常处理
    mybatis的#{}和${}的区别以及order by注入问题
    前后端分离结构中使用shiro进行权限控制
    Java FTP下载文件
    10个经典智力推理题!据说答对7道,智力在140!
    Java面试题总结之数据结构、算法和计算机基础(刘小牛和丝音的爱情故事1)
    Java面试题总结之JDBC 和Hibernate
    Java面试题总结之数据库与SQL语句
  • 原文地址:https://www.cnblogs.com/heyang78/p/11689823.html
Copyright © 2011-2022 走看看