public void procedureTest(){String sql = "{ call pro_test111(?,?,?)}";CallableStatement call = null;try {call = conn.prepareCall(sql);//IN需要set OUT需要reistercall.setString(1, "jdbc");call.setInt(2, 2);call.setString(3, "default");call.registerOutParameter(3, Types.VARCHAR);call.execute();//拿到返回值Object object = call.getObject(3);System.out.println(object);} catch (SQLException e) {e.printStackTrace();} finally {//关闭连接DBConfig.close(call, conn);}}
poolName=c3p0
className=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=chalco1129
password=chalco1129
initialPoolSize=10
minPoolSize=20
maxPoolSize=50
maxIdleTime=30
package com.isoftstone.utils;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/*** 数据库连接配置信息* @author mjzhud**/
public class DBConfiguration {private static Properties pro;static {//加载属性文件,读取数据库连接配置信息pro = new Properties();try {pro.load(DBConfiguration.class.getResourceAsStream("/db.properties"));} catch (IOException e) {e.printStackTrace();System.out.println("未找到配置文件!!!");}}public static Connection getConnection() {if ("c3p0".equals(pro.getProperty("poolName"))) return getC3P0Connection();if ("dbcp".equals(pro.getProperty("poolName"))) return getC3P0Connection();return null;}private static Connection getC3P0Connection(){ComboPooledDataSource c3p0 = new ComboPooledDataSource();try {c3p0.setDriverClass(pro.getProperty("className"));c3p0.setJdbcUrl(pro.getProperty("url"));c3p0.setUser(pro.getProperty("username"));c3p0.setPassword(pro.getProperty("password"));c3p0.setInitialPoolSize(Integer.valueOf(pro.getProperty("initialPoolSize")));c3p0.setMinPoolSize(Integer.valueOf(pro.getProperty("minPoolSize")));c3p0.setMaxPoolSize(Integer.valueOf(pro.getProperty("maxPoolSize")));c3p0.setMaxIdleTime(Integer.valueOf(pro.getProperty("maxIdleTime")));return c3p0.getConnection();} catch (PropertyVetoException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();System.out.println("连接失败,检查用户名和密码");}return null;}public static void close(Statement statement,Connection conn){try {if (statement != null) statement.close();} catch (SQLException e) {e.printStackTrace();}try {if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}public static void close(ResultSet rs,Statement statement,Connection conn){try {if (rs != null) rs.close();} catch (SQLException e) {e.printStackTrace();}close(statement,conn);}
}
package com.isoftstone.utils;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.junit.Before;
import org.junit.Test;
import bios.report.core.chart.t;
import com.isoftstone.manager.bean.Student;
import com.isoftstone.utils.DBConfiguration;public class JdbcDBUtil {private static Connection conn = DBConfiguration.getConnection();public static QueryRunner runner = new QueryRunner();public static int add(String sql) throws SQLException{int count = -1;try {conn.setAutoCommit(false);count = runner.update(conn , sql);} catch (Exception e) {conn.rollback();} finally {conn.commit();}if (count > 0) {System.out.println("一条新增成功");return 1;}System.out.println("一条新增失败");return -1;}public static int add(String sql,Object[] params) throws SQLException{int count = -1;try {conn.setAutoCommit(false);count = runner.update(conn , sql, params);} catch (Exception e) {conn.rollback();} finally {conn.commit();}if (count > 0) {System.out.println("一条新增成功");return 1;}System.out.println("一条新增失败");return -1;}public static int update(String sql) throws SQLException{try {conn.setAutoCommit(false);runner.update(conn , sql);} catch (Exception e) {conn.rollback();return -1;} finally {conn.commit();}System.out.println("一条更新成功");return 1;}public static int update(String sql,Object[] params) throws SQLException{try {conn.setAutoCommit(false);runner.update(conn , sql, params);} catch (Exception e) {conn.rollback();return -1;} finally {conn.commit();}System.out.println("一条更新成功");return 1;}public static int delete(String sql) throws SQLException{try {conn.setAutoCommit(false);runner.update(conn , sql);} catch (Exception e) {conn.rollback();return -1;} finally {conn.commit();}System.out.println("一条删除成功");return 1;}public static int delete(String sql,Object[] params) throws SQLException{try {conn.setAutoCommit(false);runner.update(conn , sql, params);} catch (Exception e) {conn.rollback();return -1;} finally {conn.commit();}System.out.println("一条删除成功");return 1;}/*** DBUtils批处理,只能处理同一预处理sql语句* @param sql* @param paramArr* @return* @throws SQLException*/public static int dbUtilsBatch(String sql,Object[][] paramArr) throws SQLException{int[] count = null;try {conn.setAutoCommit(false);count = runner.batch(conn , sql, paramArr);} catch (Exception e) {conn.rollback();return -1;} finally {conn.commit();}int updateCount = 0;if (count != null && count.length > 0) {for (int i : count) {if (i > 0) updateCount++;}}System.out.println("影响的行数="+updateCount);return 1;}/*** Statement可以批量处理各种sql* @param sqls* @return* @throws SQLException*/public static int statementBatch(String[] sqls) throws SQLException{Statement statement = conn.createStatement();for (String sql : sqls) {statement.addBatch(sql);}int[] count = null;try {conn.setAutoCommit(false);count = statement.executeBatch();} catch (Exception e) {conn.rollback();return -1;} finally {conn.commit();DBConfiguration.close(statement, conn);}int updateCount = 0;if (count != null && count.length > 0) {for (int i : count) {if (i > 0) updateCount++;}}System.out.println("影响的行数="+updateCount);return 1;}public static List
package com.isoftstone.manager.bean;public class Student {private long id;private String name;private int gender;private int age;private String email;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getGender() {return gender;}public void setGender(int gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", gender=" + gender+ ", age=" + age + ", email=" + email + "]";}
}
package com.isoftstone.manager.dao;
import java.sql.SQLException;
import java.util.List;
import com.isoftstone.manager.bean.Student;public interface StudentDao {public int add(Student stu) throws SQLException;public int updateById(Student stu) throws SQLException;public int deleteById(int id) throws SQLException;public Student queryById(int id) throws SQLException;public List
}
package com.isoftstone.manager.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.isoftstone.manager.bean.Student;
import com.isoftstone.manager.dao.StudentDao;
import com.isoftstone.utils.DBConfiguration;
import com.isoftstone.utils.JdbcDBUtil;public class StudentDaoImpl implements StudentDao {public int add(Student stu) throws SQLException {String sql = "insert into stu values (seq_stu.nextval,?,?,?,?)";Object[] params = new Object[]{stu.getName(),stu.getGender(),stu.getAge(),stu.getEmail()};return JdbcDBUtil.add(sql,params);}public int updateById(Student stu) throws SQLException {String sql = "update stu set name = ?,gender=?,age=?,email=? where id = ?";Object[] params = new Object[]{stu.getName(),stu.getGender(),stu.getAge(),stu.getEmail(),stu.getId()};return JdbcDBUtil.update(sql,params);}public int deleteById(int id) throws SQLException {String sql = "delete from stu where id = " + id;return JdbcDBUtil.delete(sql);}public Student queryById(int id) throws SQLException {String sql = "select * from stu where id = ?";return JdbcDBUtil.runner.query(DBConfiguration.getConnection(), sql, new BeanHandler
}