底层代码:
package com.zdsoft; import java.sql.*; /** * Created by lx on 2017/6/22. */ public class JDBCUtil { private static JDBCUtil jdbcUtil; //驱动路径 private static String DRIVER="com.mysql.jdbc.Driver"; //数据库的连接路径 private static String URL="jdbc:mysql://localhost:3306/test"; //用户名 private static String userName="root"; //密码 private static String passWord="123456"; private Connection connection; private PreparedStatement statement; ResultSet resultSet; /** * 加载驱动*/ static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 私有化构造器*/ private JDBCUtil(){ } /** * 双重检索单例*/ public static JDBCUtil getInstance(){ if (jdbcUtil==null){ synchronized (JDBCUtil.class){ if (jdbcUtil==null){ jdbcUtil=new JDBCUtil(); } } } return jdbcUtil; } /** * 用来做增删改操作的方法 * @param sql String类型sql语句 * @param args Object类型可变长度参数 * @return int 类型等于-1添加失败,大于0 添加成功 */ public int update(String sql ,Object...args){ int count=-1; //打开数据库连接 getConnection(); try { //创建预加载对象 statement=connection.prepareStatement(sql); if (args!=null){ for (int i=0;i<args.length;i++){ statement.setObject(i+1,args[i]); } } //执行sql语句 count=statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); cloes(); return count; } cloes(); return count; } /** * 查询通用操作方法 * @param sql String 类型 本次操作的sql语句 * @param args Object 类型 可变长度的参数 * @return 返回resultset 类型 结果集 如出现异常则返回 null */ public ResultSet query(String sql,Object...args){ //打开连接 getConnection(); try { //创建sql操作对象 statement=connection.prepareStatement(sql); if (args!=null){ for (int i=0;i<args.length;i++){ //给占位符赋值 statement.setObject(i+1,args[i]); } //执行sql语句 resultSet= statement.executeQuery(); } } catch (SQLException e) { e.printStackTrace(); cloes(); return null; } return resultSet; } /** * 打开连接的方法*/ public void getConnection(){ try { connection=DriverManager.getConnection(URL,userName,passWord); } catch (SQLException e) { e.printStackTrace(); } } public void cloes(){ if (resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if (statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if (connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } } } }
业务逻辑层
1 package com.zdsoft; 2 3 import java.sql.*; 4 import java.util.ArrayList; 5 import java.util.HashMap; 6 import java.util.List; 7 import java.util.Map; 8 9 /** 10 * Created by lx on 2017/6/22. 11 */ 12 public class StudentService { 13 /** 14 * 15 * @param stu_code 学号 16 * @param stu_name 姓名 17 * @param stu_sex 年龄 18 * @param birthday 生日 19 * @param classid 班级编号 20 * @return int 类型等于-1添加失败,大于0 添加成功 21 */ 22 public int addStudent(int stu_code,String stu_name,String stu_sex,String birthday,int classid){ 23 String sql="insert into student(stu_code,stu_name,stu_sex,birthday,stu_calssid) values(?,?,?,?,?)"; 24 return JDBCUtil.getInstance().update(sql,stu_code,stu_name,stu_sex,birthday,classid); 25 } 26 27 /** 28 *根据姓名查询信息的方法 29 * @param name 姓名 30 * @return ArrayList 类型 结果集 如出现异常则返回 null 31 */ 32 33 public List<Map> getStuInfo(String name){ 34 List<Map> list=new ArrayList<Map>(); 35 ResultSet set=null; 36 //创建sql语句 37 String sql="select * from student where stu_name=?"; 38 set=JDBCUtil.getInstance().query(sql,name); 39 return resultPull(set); 40 } 41 /** 42 * 负责解析任何结果的方法*/ 43 private List<Map> resultPull(ResultSet resultSet){ 44 //利用结果集获取resultMateData的实例 45 List<Map> list=new ArrayList<Map>(); 46 Map hashMap; 47 try { 48 ResultSetMetaData metaData=resultSet.getMetaData(); 49 //获取要解析的数据总共有多少列 50 int count=metaData.getColumnCount(); 51 while (resultSet.next()){ 52 hashMap=new HashMap(); 53 for (int i=1;i<=count;i++){ 54 hashMap.put(metaData.getColumnName(i),resultSet.getObject(i)); 55 } 56 list.add(hashMap); 57 } 58 } catch (SQLException e) { 59 e.printStackTrace(); 60 return null; 61 } 62 return list; 63 } 64 65 }
查询层:
package com.zdsoft; import javax.xml.parsers.DocumentBuilderFactory; import java.sql.*; import java.util.List; import java.util.Map; /** * Created by lx on 2017/6/22. */ public class DemoDB { public static void main(String[] args) { StudentService studentService=new StudentService(); List<Map> list=studentService.getStuInfo("刘德华"); } }
测试:
package com.zdsoft; /** * Created by lx on 2017/6/23. */ public class Test { public static void main(String[] args) { } }