接下来看看传统的查询方式(一个完整的查询)
package com.java.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * <p> * Title: db.java * </p> * * @author daxiang * @version 1.0 创建时间:2018年5月22日 上午8:00:22 */ public class DB { public static void main(String[] args) { Connection con;// 声明Connection对象 String driver = "com.mysql.jdbc.Driver";// 驱动程序名 String url = "jdbc:mysql://localhost:3306/db_student";// URL指向要访问的数据库名db_student String user = "root";// MySQL配置时的用户名 String password = "123";// MySQL配置时的密码 try { Class.forName(driver);// 加载驱动程序 con = DriverManager.getConnection(url, user, password);// 使用getConnection()方法,连接MySQL数据库!! if (!con.isClosed()) System.out.println("成功连接mysql数据库"); // 2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement(); // 要执行的SQL语句 String sql = "select * from admin"; // 3.ResultSet类,用来存放获取的结果集!! ResultSet rs = statement.executeQuery(sql); System.out.println("-----------------"); System.out.println("执行结果如下所示:"); System.out.println("-----------------"); System.out.println("id" + " " + "admin" + " " + "password"); System.out.println("-----------------"); // 遍历查询结果集 while (rs.next()) { String id = rs.getString(1);// 获取第一列数据 String username = rs.getString(2); // 获取第二列数据 String pwd= rs.getString(3); // 获取第三列数据 System.out.println(id + " " + username + " " + pwd);// 输出结果 } rs.close(); con.close(); } catch (ClassNotFoundException e) { System.out.println("无法加载驱动"); e.printStackTrace();// 数据库驱动类异常处理 } catch (SQLException e) { e.printStackTrace();// 数据库连接失败异常处理 } catch (Exception e) { e.printStackTrace(); } } }
上面完成了对db_student数据库中admin表的查询,而且得到了结果
但是这样的并没有实现代码复用,当别的实体需要查询或者其他操作时,还需要重复的连接等过程,所以我们对常用操作进行封装,将数据库的基本“增、删、查、改”封装到一个类里面
DbUtil.java(数据库操作工具类)
package com.student.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /* * 项目名称: * * 文件名称为:DbUtil.java * 文件创建人:daxiang * * 修改记录: * 修改人 修改日期 备注 * * * * @author daxiang * @version * @time 2018年6月14日 上午9:16:44 * @copyright daxiang */ public class DbUtil { private Connection con;// 声明Connection对象 public DbUtil() { String driver = "com.mysql.jdbc.Driver";// 驱动程序名 String url = "jdbc:mysql://localhost:3306/db_student?characterEncoding=utf8";// URL指向要访问的数据库名mysql String user = "root";// MySQL配置时的用户名 String password = "123";// MySQL配置时的密码 try { // 加载驱动 Class.forName(driver); // 获取连接 con = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } /** * 增、删、改 * * @return * @throws SQLException */ public boolean execute(String sql) throws SQLException { // 获取操作对象 Statement statement = con.createStatement(); // 执行 if (statement.executeUpdate(sql) > 0) { return true; } return false; } /** * 查询 * * @param sql * @return * @throws SQLException */ public ResultSet executeQuery(String sql) throws SQLException { // 获取操作对象 Statement statement = con.createStatement(); // 执行 return statement.executeQuery(sql); } }
AppConstants .java(常量参数类)
package com.demo.util; /* * 项目名称: * * 文件名称为:AppConstants.java * 文件创建人:daxiang * * @author daxiang * @version * @time 2018年6月13日 下午7:57:10 * @copyright daxiang */ public class AppConstants { // jdbc public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/db_student?characterEncoding=utf8"; public static final String JDBC_USERNAME = "root"; public static final String JDBC_PASSWORD = "123"; public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; }
这样封装后我们就可以简化服务类中的代码,请看