文档章节

原生JDBC以及,Spring JdbcTemplate的新增、删除,以及带返回值的存储过程调用

后海
 后海
发布于 2016/04/21 16:17
字数 374
阅读 306
收藏 5
//纯JDBC的新增、删除,以及带返回值的存储过程调用
//初始化JDBC
String dbUrl = "jdbc:oracle:thin:@1.1.1.2:1521:orcl";    
String theUser = "aa";    
String thePw = "aa"; 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();    
Connection con = DriverManager.getConnection(dbUrl, theUser, thePw);
//System.out.println("#DB "+con);

String sql = "";
int ct = 0;
Statement st = null;
ResultSet rs = null;
PreparedStatement pt = null;

//查询是否有数据
sql = "select count(1) as ct from tb1 where hm = '1' "; 
st = con.createStatement();  
rs = st.executeQuery(sql);
rs.next();ct = rs.getInt(1);
if(ct == 0){ //表无此数据
	//新增数据
	sql = "insert into tb1(id,hm,kk) values (?,?,0) ";
	pt = con.prepareStatement(sql);
	pt.setString(1, UUID.randomUUID().toString());
	pt.setString(2, "21");
	
	ct = pt.executeUpdate();
	if(ct != 0){
		//存储过程
		CallableStatement call = con.prepareCall("{call PL_CM(?,?)}");
		call.setString(1,"2");
		call.registerOutParameter(2, Types.VARCHAR);  
		call.execute();
		System.out.println("#Log [返回值] "+call.getString(2));
	}
}




//基于Spring JdbcTemplate的新增、删除,以及带返回值的存储过程调用
//查询是否有数据
sql = "select count(1) as ct from tb1 where hm = '1' "; 
final Object[] params = new Object[] {"1"};
Object xmls = jdbc.getJdbcTemplate().queryForObject(sql, params,Object.class);
//如果不存在数据
if(xmls != null && !"".equals(xmls.toString())){
    sql = "insert into b_users(id,hm,kk) values (?,?,0) "; 
    Object[] ps = new Object[] {UUID.randomUUID().toString(),"22"};
    if(jdbc.getJdbcTemplate().update(sql,ps) != 0){
		//调用存储过程执行业务,返回结果
		String val = (String)jdbc.getJdbcTemplate().execute(
		 new CallableStatementCreator() {
		    public CallableStatement createCallableStatement(Connection con) throws SQLException {
		       CallableStatement cs = con.prepareCall("{call PL_CM(?,?)}"); // 调用的存储过程
		       cs.setString(1, "21");// 设置输入参数的值 
		       cs.registerOutParameter(2,Types.VARCHAR); //注册输出参数的类型   
		       return cs;
		    }
		 }, new CallableStatementCallback() {   
		     public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {  
		       cs.execute();   
		       return cs.getString(2); //获取输出参数的值   
		 }   
	      });
     };
}


© 著作权归作者所有

后海
粉丝 30
博文 44
码字总数 25623
作品 2
闵行
后端工程师
私信 提问
Spring之jdbc Template实现CRUD操作

Spring为各种持久化技术都提供了简单操作的模板回调。比如jdbc、hibernate、Mybatis以及JPA等。 这里我们就以JDBC为例,看看JDBC template怎么实现CRUD操作。 JdbcTemplate主要提供以下几类方...

Java攻城玩家
2018/05/31
0
0
Spring 对JDBC操作的支持

在用JDBC进行数据库的操作的时候会在每个DAO中写有很多重复和类似的代码(建立连接,关闭连接等等),Spring的JDBC框架对这些重复的操作做了提取,形成了模板,使用Spring的JDBC框架的开发者通过提...

晨曦之光
2012/04/25
1K
0
spring中的JdbcTemplate简单记录

JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate...

刘谱_smile
2015/07/15
0
0
对JDBC的支持 之 7.2 JDBC模板类

JDBC模板类 概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式。 JdbcTemplate类通过模...

heroShane
2014/02/27
0
0
Spring JdbcTemplate方法详解

JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate...

zqcju
2014/06/13
0
6

没有更多内容

加载失败,请刷新页面

加载更多

10分钟详解Spring全家桶7大知识点

点关注,不迷路;持续更新Java架构相关技术及资讯热文!!! Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spr...

我最喜欢三大框架
2分钟前
0
0
注册服务

列出所有服务[root@localhost ~]# systemctl list-unit-files[root@localhost ~]# systemctl status mysqld[root@localhost ~]# systemctl stop mysqld[root@localhost ~]# ......

jxlgzwh
5分钟前
0
0
解决jdk8 stream tomap方法报错:java.lang.IllegalStateException: Duplicate key异常解决(key重复)

List<User> userList = User.ME.loadList(users); if (CollectionUtils.isNotEmpty(userList)) { Map<Long, User> userMap = userList.stream().filter(Objects::nonN......

冰峰雪座
14分钟前
0
0
jdk中的一些命令

jdk中的一些命令 jps jstack jmap jstat jhat jinfo javap http://www.importnew.com/18398.html

晨猫
15分钟前
0
0
Bystack的高TPS共识算法

共识算法是分布式系统保证节点数据状态一致性的方法,在区块链的共识算法分POW(工作量证明)和POS(权益证明)两大类。第一类POW模式是在公链项目中运用的最广泛应用的共识算法,比特币长达10年...

比原链Bytom
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部