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

//纯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); //获取输出参数的值   
		 }   
	      });
     };
}


你可能感兴趣的:(存储过程,jdbc)