Mybatis加载参数多参数

写DAO时要向SQL语句传入多个参数作为条件或数据的时候可通过以下方式

1、传入一个对象使用#或$获取,参数和类中的名字对应这种用于添加较为方便

    @Insert("INSERT INTO areas(longitude, latitude, user_idnum) VALUES (#{longitude},#{latitude},#{user_idnum})")
    public void insertArea(Areas area);

2、如果只是相传一个或两个值作为查询的参数,这就有些麻烦

@Select("SELECT light FROM iot_form.data_unit_sensor where areaid=#{areaid} and day=#{day}")
public double[] findLightByDayAndArea(int areaid,int day);

这么写,运行

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'areaid' not found. Available parameters are [arg1, arg0, param1, param2]

报错,错误原因是它找不到参数这时应该告诉mybatis,使用 @Param注解

    @Select("SELECT air_temp FROM iot_form.data_unit_sensor where areaid=#{areaid} and day=#{day}")
    public double[] findAirTempByDayAndArea(@Param("areaid") int areaid, @Param("day") int day);

运行ok,如果是一个参数,可以不使用注解

posted @ 2020-03-19 09:31  一条土狗  阅读(203)  评论(0编辑  收藏  举报