使用mybatis动态查询表名


开发时有个需求,需要对不同的表进行统计条目,然后,在table中分页显示,如果对每个表的统计功能都建立一个mapper,势必会非常繁杂,所以采用动态传入表名的形式会比较方便。
正常情况下,向表名这样的特殊字段是不可以正确执行的,mybatis做了预编译的处理,此时表名是必需的,这是为了防止sql注入的情况。如果我们要动态传递表名,我们可以对mybatis声明为statementType=”STATEMENT”的形式,取消mybatis的预编译,并且,传参时通过${}来接收,这样就可以完成表名的动态传参。
<select id=”countByTbName” statementType=”STATEMENT” resultType=”java.lang.Integer”  parameterType=”java.util.Map” >
        SELECT
            count(*)
        FROM
            ${tbName}
    </select>

 


分享到:

发表评论

昵称

抢个沙发呗~~~