zoukankan      html  css  js  c++  java
  • MyBatis在表名作为参数时遇到的问题

    之前在用MyBatis的时候没用过表名作为参数,最近使用到了。

    基于注释使用MyBatis的Dao层代码如下:

    @Repository
    public interface Base1102Dao {
        @Select(value = "Select * from ${table_name} order by id")
        @ResultType(HashMap.class)
        List<HashMap> getAll(@Param("table_name") String tableName);
    }

    区别为:在用表作为参数使用的时候不在使用#{param},而是使用${param}。

    同时遇到的一个问题是因为在参数的时候没有使用@Parem注解会导致编译器误以为String为一个class,报如下错

    // 第二个标红的代码(@Param("table_name"))如果去掉就会报这个错

    There is no getter for property named 'table_name' in 'class java.lang.String'

    解决方案:加上@Param然后指定一个名字,在sql中使用就可以了

    我之前经常不对单个String作为参数的函数用@Param参数注释,因为直接在sql 中写   #{string} 就可以了。但这个不知道为什么一定要这样写(因为参数去当表名了?)。不深究

    一篇对@Param参数注解细讲的文章连接:

    http://iyiguo.net/blog/2012/09/27/mybatis-param-mapping-rules/

  • 相关阅读:
    axios,ajax,xhr 请求携带Cookie
    js中reduce的方法和去重
    H5图片预览
    网页唤起qq加群
    tab切换中嵌套swiper轮播
    CantOS的安装
    共享文件夹或文件
    Vue中,iframe中的子网页,调用父网页的方法
    禁止未使用的变量 ( `no-unused-vars`)
    vite + vue3 + ts搭建项目
  • 原文地址:https://www.cnblogs.com/Jacck/p/8289300.html
Copyright © 2011-2022 走看看