这篇文章主要介绍了BaseJDBC和CRUDDAO的写法实例代码,代码注释十分详细,具有一定参考价值,需要的朋友可以了解下。
我们首先看下BASEJDBC的写法实例:
package com.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.sqlException; import java.sql.Statement; import com.MysqL.jdbc.Driver; public class BaseJDBC { // 表示你要操作的是哪种类型的数据库 private final String DRIVER = "com.MysqL.jdbc.Driver"; // 表示你要连接的是哪一台电脑的服务器端口号是多少数据库的名字是什么 private final String URL = "jdbc:MysqL://localhost:3306/zzy";//有时这里需要加上字符集 // 登录数据库的用户名 private final String USERNMAE = "root"; // 登录数据库的密码 private final String PASSWORD = "root"; /** * 注册驱动 获取连接 * * @return */ public Connection getConnection() { try { //Driver d=new Driver(); // 注册驱动:反射(是一项很高深的技术) Class.forName(DRIVER); // 由连接大管家创建连接对象 return DriverManager.getConnection(URL, USERNMAE, PASSWORD); } catch (ClassNotFoundException e) { //e.printstacktrace("数据库的驱动文件没有找到"); } catch (sqlException e) { //数据库的连接错误 e.printstacktrace(); } return null; } /** * 关闭连接释放资源 * @param con * @param st * @param rt */ public void closeAll(Connection con, Statement st, ResultSet rt) { try { if (rt != null) { rt.close(); rt = null; } } catch (sqlException e) { e.printstacktrace(); } try { if (st != null) { st.close(); st = null; } } catch (sqlException e) { e.printstacktrace(); } try { if (con != null) { con.close(); con = null; } } catch (sqlException e) { e.printstacktrace(); } } }
CRUDDAO 写法代码实例:
package com.dao; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.*; import java.util.*; import java.util.Map.Entry; /** * * @author zzy * * 2016年12月1日下午1:49:49 */ public class CRUDDAO extends BaseJDBC { private Connection con = null; private PreparedStatement pt = null; private Statement st = null; private ResultSet rt = null; private Class c; public CRUDDAO() { } public CRUDDAO(Class c) { this.c = c; } /** * 查询操作要改造的地方 第一:参数必须抽象 第二:返回类型必须抽象 * * @param * @param * * @return Map> */ public Map> selectAll(Map m) { int index = 0; Map> map = new LinkedHashMap>(); List list = null; try { con = super.getConnection(); if (con != null) { Set> set = m.entrySet(); for (Entry entry : set) { list = new ArrayList(); pt = con.prepareStatement(entry.getKey()); this.bind(entry.getValue()); rt = pt.executeQuery(); while (rt.next()) { list.add(this.toBean2()); } map.put(++index, list); } } else { System.out.println("数据库连接失败"); } } catch (sqlException e) { e.printstacktrace(); } finally { super.closeAll(con, pt, rt); } return map; } /** * 将数据库查询到的数据进行封装 封装成实体类之后再返回给调用者 * * @return */ private T toBean() { T t = null; try { t = c.newInstance(); Method[] m = c.getmethods(); ResultSetMetaData rmt = rt.getMetaData(); for (int i = 1, count = rmt.getColumnCount(); i map) { int[] row = new int[map.size()]; int index = 0; int error = 0; try { con = super.getConnection(); if (con != null) { Set> set = map.entrySet(); // 关闭连接对象的自动提交的功能 con.setAutoCommit(false); for (Entry entry : set) { pt = con.prepareStatement(entry.getKey()); this.bind(entry.getValue()); row[index] = pt.executeUpdate(); if (row[index] == 0) { throw new Exception("修改失败,数据回滚!"); } index++; } } else { System.out.println("数据库连接失败"); } } catch (Exception e) { error++; e.printstacktrace(); } finally { if (error > 0) { try { // 将前面已经执行的命令回滚 con.rollback(); } catch (sqlException e) { e.printstacktrace(); } } else { try { // 全部提交 con.commit(); } catch (sqlException e) { e.printstacktrace(); } } super.closeAll(con, st, null); } return row; } }
总结
以上就是本文关于BaseJDBC和CRUDDAO的写法实例代码的全部内容,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程之家网站的支持!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。