Mybatis动态传表名(同样适用于动态传表字段)

//设置map参数,innerTable,outTable对应的表名

public String sendDetail(){

pager = getStartPager();

if( null !=msg && msg.equals("succ")){

map.put("innerTable","bs_sent_inner" );

map.put("outTable","bs_sent_out" );

pager = outBoxInnerService.findSendPager(pager, map);

}

if(null !=msg && msg.equals("falilure")){

map.put("innerTable","bs_fail_inner" );

map.put("outTable","bs_fail_out" );

pager = outBoxInnerService.findSendPager(pager, map);

}

map.remove("innerTable");

map.remove("outTable");

return "sendDetail";

}

<!-- xml 配置 table参数-->

select  * FROM ${innerTable} where 1 = 1

<if test="config_id != null and config_id !=‘‘ ">

and ms.config_id = #{config_id}

</if>

时间: 2024-10-31 09:35:24

Mybatis动态传表名(同样适用于动态传表字段)的相关文章

spring hibernate实现动态替换表名(分表)

1.概述 其实最简单的办法就是使用原生sql,如 session.createSQLQuery("sql"),或者使用jdbcTemplate.但是项目中已经使用了hql的方式查询,修改起来又累,风险又大!所以,必须找到一种比较好的解决方案,实在不行再改写吧!经过3天的时间的研究,终于找到一种不错的方法,下面讲述之. 2.步骤 2.1 新建hibernate interceptor类 /** * Created by hdwang on 2017/8/7. * * hibernate拦

MyBatis,动态传入表名,字段名的解决办法

转载:http://luoyu-ds.iteye.com/blog/1517607 今天做项目,遇到的问题就是需求修改数据表的记录,而且字段名都不是固定的,也就是说是需要通过参数传入的, 本来这也不是什么难题,按照平常的JDBC,或者hibernate里也都好实现,可问题是现在项目用的mybatis这个持久层框架,按照我的刚开始的想法初使sql是这样的, 当我满心欢喜的运行才发现不行,遂百度之,办法种用尽,还是不行,有人给我说需要把字段那一项换成${field},这种办法来取,试之,无果,于是我

mybatis动态调用表名和字段名

一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这种情况下,就需要构建sql来动态传入表名.字段名了.现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助. 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理.下面让我们先

mybatis动态传入表名、列名

原文:http://luoyu-ds.iteye.com/blog/1517607 要实现动态传入表名.列名,需要做如下修改 添加属性statementType="STATEMENT" (可省略) 同时sql里的属有变量取值都改成${xxxx},而不是#{xxx} <delete id="deleteTableData" parameterType="java.util.Map" statementType="STATEMENT&

[转]MyBatis动态传入表名,字段名参数的解决办法

一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这种情况下,就需要构建sql来动态传入表名.字段名了.现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助. 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理.下面让我们先

ibatis 动态传入表名

项目中需要根据不同的表名和列名生成不同的select语句,我想ibatis这里也应该是用预编译的形式存储???? 不太了解具体原理,反正我知道在用oci库的时候,是可以的;用sprinf("sql","xx","xx"),一下,就可以了.oci库肯定是用预编译的形式干的! 于是,我上网查了查,感觉类似的问题有,可没给出一个完整的例子.想了一想,既然你能动态传入map,map里面存储了相应的查询值,那你 ibatis肯定也能传入其他元数据信息吧.测

mysql 动态传入表名参数的存储过程写法

delimiter // create procedure oneKey(in newName varchar(250),in oldName varchar(250),in idNum INT) BEGIN SET @sqlStmt = CONCAT('insert into ',newName,' (`name`,`age`,`sex`,`major`,`pass`,`photo`) select `name`,`age`,`sex`,`major`,`pass`,`photo` from

在SQLAlchemy ORM中动态变更表名

在开发过程中,经常会遇到几张表结构相同,仅仅表名不一样.这在直接使用SQL语句进行查询的环境中处理起来很简单,但如果使用了SQLAlchemy ORM之后,因在model定义时就确定了表名,就需要用其他方法进行表名的变更. 假定数据库中有两张表:user,user_1,下面用一个简单程序展示如何在查询时变更表名. 使用declarative_base定义的model from sqlalchemy import create_engine from sqlalchemy import Table

MySQL修改表的默认字符集和修改表字段的默认字符集

修改表的默认字符集: ALTER TABLE table_name DEFAULT CHARACTER SET character_name; 修改表字段的默认字符集: ALTER TABLE table_name CHANGE field field field_type CHARACTER SET character_name [other_attribute] 修改表的默认字符集和所有列的字符集: ALTER TABLE table_name CONVERT TO CHARACTER SE