JDBC学习总结5-------使用了内部类后的改造
2012-07-14 14:28
369 查看
1.com.hanchao.entity包
2.com.hanchao.util包《1》.一个接口
本文出自 “我的JAVA世界” 博客,请务必保留此出处http://hanchaohan.blog.51cto.com/2996417/930862
package com.hanchao.entity; /** * 实体类 * @author hanlw * 2012-07-09 */ public class User { private int id; private String username; private String address; //get...set...方法 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
2.com.hanchao.util包《1》.一个接口
package com.hanchao.util; import java.sql.ResultSet; import java.sql.SQLException; /** * 顶一个泛型的RowMapper接口 * @author hanlw * 2012-07-09 */ public interface RowMapper<T> { /** * 注意:T表示一个泛型的实体类。 */ public T mapperRow(ResultSet rs) throws SQLException; }《2》.工具类
package com.hanchao.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * 顶一个泛型的工具类 * @author hanlw * 2012-07-09 */ public class DBHelp<T> { //定义几个常量 private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://127.0.0.1:3306/mydb"; private static final String DB_NAME = "root"; private static final String DB_PASSWORD = "root"; /** * 连接数据库 * @return */ public Connection getConnection() { Connection con = null; try { Class.forName(DRIVER); con = DriverManager.getConnection(URL,DB_NAME,DB_PASSWORD); } catch (Exception e) { e.printStackTrace(); } return con; } /** * 返回一个对象的查询★ * @param sql SQL语句 * @param rm 该接口的所有实现类对象 * @param args 不定项参数 * @return */ public T queryForObject(String sql, RowMapper<T> rm, Object...args) { Connection con = getConnection(); PreparedStatement sta = null; ResultSet rs = null; T obj = null; try { sta = con.prepareStatement(sql); for (int i = 0; i < args.length; i++) { sta.setObject(i+1, args[i]);//★ } rs = sta.executeQuery(); if(rs.next()) { obj = rm.mapperRow(rs);//实际上运行是其实现类中的mapperRow()方法,即实现类重现后的方法 } } catch (SQLException e) { e.printStackTrace(); } finally { close(rs,sta,con); } return obj; } /** * 返回一个集合的查询 * @param sql → SQL语句 * @param rm → RowMapper<T>接口的实现类对象 * @param args → 不定项参数 * @return */ public List<T> queryForList(String sql,RowMapper<T> rm, Object...args) { Connection con = getConnection(); PreparedStatement sta = null; ResultSet rs = null; List<T> list = new ArrayList<T>(); try { sta = con.prepareStatement(sql); for (int i = 0; i < args.length; i++) { sta.setObject(i+1, args[i]); } rs = sta.executeQuery(); while(rs.next()) { T obj = rm.mapperRow(rs); list.add(obj); } } catch (SQLException e) { e.printStackTrace(); } finally { close(rs,sta,con); } return list; } /** * 用来执行insert、update、delete方法 * @param sql → SQL语句 * @param args → 不定项参数 * @return */ public int executeSQL(String sql, Object...args) { Connection con = getConnection(); PreparedStatement sta = null; int rows = 0; try { sta = con.prepareStatement(sql); for (int i = 0; i < args.length; i++) { sta.setObject(i+1, args[i]); } rows = sta.executeUpdate(); if(rows > 0) { System.out.println("ok"); } else { System.out.println("no"); } } catch (Exception e) { e.printStackTrace(); } finally { close(sta,con); } return rows; } /** * 关闭 → 注意关闭的顺序 rs,sta,con. * @param rs * @param sta * @param con */ public void close(ResultSet rs, PreparedStatement sta, Connection con) { try { if(rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if(sta != null) { sta.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if(con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } /** * sta,con的关闭 * @param sta * @param con */ public void close(PreparedStatement sta, Connection con) { this.close(null, sta, con); } //************************************************ }3.com.hanchao.dao包
package com.hanchao.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import com.hanchao.entity.User; import com.hanchao.util.DBHelp; import com.hanchao.util.RowMapper; /** * 对User对象操作的Dao类 * @author hanlw * 2012-07-09 */ public class UserDao { private DBHelp<User> db = new DBHelp<User>(); /** * 添加操作 * @param name * @param address * @return */ public int save(String name, String address) { String sql = "insert into t_user(username,address) values(?,?)"; return db.executeSQL(sql, name,address); } /** * 更新操作 * @param user * @return */ public int update(User user) { String sql = "update t_user set username=?,address=? where id=?"; return db.executeSQL(sql, user.getUsername(),user.getAddress(),user.getId()); } /** * 删除操作 * @param id * @return */ public int delete(int id) { String sql = "delete from t_user where id=?"; return db.executeSQL(sql, id); } /** * 查找单独的一个用户 * @param name * @return */ public User findByName(String name) { String sql = "select id,username,address from t_user where username=?"; return db.queryForObject(sql, new UserRowMpper(), name); } /** * 查询所有 * @return */ public List<User> findAll() { String sql = "select id,username,address from t_user"; return db.queryForList(sql, new UserRowMpper()); } /** * 接口RowMapper的一个实现类 (这是一个内部类哦) * ★具体了解内部类的知识:http://hanchaohan.blog.51cto.com/2996417/930721 * @author hanlw * */ private class UserRowMpper implements RowMapper<User> { /** * 实现该接口的所有的方法 */ public User mapperRow(ResultSet rs) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setAddress(rs.getString("address")); return user; } } }4.com.hanchao.test包
package com.hanchao.test; import java.util.List; import com.hanchao.dao.UserDao; import com.hanchao.entity.User; /** * 测试 * @author hanlw * 2012-07-09 */ public class Test { public static void main(String[] args) { /** * 1.添加操作 */ UserDao dao = new UserDao(); dao.save("tom", "cherry"); /** * 2.更新操作 */ User user = new User(); user.setId(32); user.setAddress(""); user.setUsername("chenchen"); dao.update(user); /** * 3.删除操作 */ dao.delete(31); /** * 4.查找一个对象 */ User u = dao.findByName("hanchao"); System.out.println("----"+u.getAddress()); /** * 查找一个集合 */ List<User> list = dao.findAll(); for(User us : list) { System.out.println(us.getUsername()); } } }关于泛型,可以了解一下这篇文字:http://www.cnblogs.com/yinhaiming/articles/1749738.html
本文出自 “我的JAVA世界” 博客,请务必保留此出处http://hanchaohan.blog.51cto.com/2996417/930862
相关文章推荐
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
- Java反射学习总结四(动态代理使用实例和内部原理解析)
- jdbc学习总结2---使用占位符的增删改查
- jdbc学习总结2---使用占位符的增删改查
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
- Java反射学习总结四(动态代理使用实例和内部原理解析)
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
- Java基础知识学习总结(二)---使用java读取jdbc.properties
- day_1_14 JavaWeb系列学习总结之BaseServlet和DBUtils的使用
- Java基础学习总结(42)——Log4j 2使用教程
- Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
- DBCP和JDBC学习总结(应用篇)
- 关于学习使用CGI的一些总结
- Dom 学习总结以及实例的使用介绍
- Mysql学习总结(10)——MySql触发器使用讲解
- JDBC MYSQL 学习笔记(一) JDBC 基本使用
- Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库(转)
- Tomcat学习总结(2)——Tomcat使用详解
- 【学习摘记】马士兵JDBC技术_复习总结_最重要的四段代码
- Jenkins学习总结(1)——Jenkins详细安装与构建部署使用教程