间接实现动态传入表名
来源:互联网 发布:qq文件恢复软件 编辑:程序博客网 时间:2024/05/16 07:43
问题是这样,想实现select * from ? order by ?通过对?动态设置参数,实现对不同表的查询
直接利用PreparedStatement st = con.prepareStatement(sql);然后执行
会报表名无效的错误
下面是间接实现这样的操作
利用字符串替换的方法
sql = String.format(sql, table);
这样在sql配置文件中就可以把表名对应的位置写为%s,通过format实现替换操作
public static void main(String[] args) throws SQLException {Connection con = DbUtils.getConnection();String sql = "select id,jindu,weidu from %s order by ?";String table = "GT1117CARBANCI";sql = String.format(sql, table);System.out.println(sql);ResultSet rs = DbUtils.executeParameterSql(con, sql,"id");while(rs.next()){System.out.println(rs.getString("id"));}}
其中用到的设置方法为
public static ResultSet executeParameterSql(Connection con,String sql,Object... para) throws SQLException{ PreparedStatement st = con.prepareStatement(sql); for(int i = 0 ;i<para.length;i++){ final Object obj = para[i]; String p = obj.toString(); int parameterIndex = i+1; if(obj.getClass().equals(Integer.class)){ st.setInt(parameterIndex, Integer.parseInt(p)); }else if(obj.getClass().equals(String.class)){ st.setString(parameterIndex, p); }else{ System.out.println("it is a special datatype:"+obj.getClass()); } } ResultSet rs = st.executeQuery();return rs;}
通过format替换之后,就可以将表名作为参数,实现对不同表的批量操作了。
0 0
- 间接实现动态传入表名
- mybatis 传入动态表名
- iBatis动态传入表名,字段名
- MyBatis,动态传入表名,字段名
- execute immediate 动态传入表名
- (总结)ibatis 动态传入表名和列名
- MyBatis,动态传入表名,字段名的解决办法
- MyBatis动态传入表名,字段名参数的解决办法
- MyBatis,动态传入表名,字段名的解决办法
- MyBatis动态传入表名,字段名参数的解决办法
- MyBatis,动态传入表名,字段名的解决办法
- MyBatis,动态传入表名,字段名的解决办法
- mybatis中动态传入表名、字段名
- MyBatis,动态传入表名,字段名的解决办法
- MyBatis动态传入表名,字段名参数的解决办法
- MyBatis,动态传入表名,字段名的解决办法
- MyBatis动态传入表名,字段名参数的解决办法
- MyBatis,动态传入表名,字段名的解决办法
- 黑马基础班学习笔记
- Oracle库表设计的优化方法
- 3种简单的键盘记录简单介绍
- 用实例说明在cocos2d-x 3.x中使用SQLite
- 异常:android.os.NetworkOnMainThreadException
- 间接实现动态传入表名
- PLSA模型的再理解以及源码分析
- TextView实现跑马灯效果 以以实现TextView没有边框 设置我们自己的背景
- Leetcode -- Edit Distance
- CSS让表格宽度适应内容
- uva_1587_BOX
- mysql 分页
- 微信支付后 对账管理
- 写出漂亮的java代码