JavaJDBC学习-DAO
来源:互联网 发布:股票评测软件 编辑:程序博客网 时间:2024/06/05 17:48
马哥的淘宝店:https://shop592330910.taobao.com/
DAO data access object
what:访问数据信息(这个数据不一定在数据库里面存放,也可能是xml文件,txt文件,data文件等)的类,包含了对数据的crud(create,read,update,delete),增删改查的操作。不包含任何逻辑代码。why:实现功能的模块化,更有利用代码的维护和升级。
how:使用JDBC编写dao
void update(String sql, Object... args) { <T> T get(Class<T> clazz, String sql, Object... args) { List<T> T getAll(Class<T> clazz, String sql, Object... args) {//这个是查询多条记录,返回一个列表 <E> E get(String sql, Object... args)//返回一个具体的记录的具体的某个列的值
public class DaoImpl implements Dao { static Dao dao; static { dao = new DaoImpl(); } //特别注意这里不能这样new //Dao dao = new DaoImpl() 在执行下面的测试方法时候 这样会导致递归的创建对象 @Test public void testUpdate() { String sql = "insert into customers(name,address,phone) values(?,?,?)"; update(sql, "tom", "beijing", "123456123"); } @Override public void update(String sql, Object... args) { Connection connection = null; PreparedStatement preparedStatement = null; try { connection = JdbcTools.getConnection(); preparedStatement = connection.prepareStatement(sql); for (int i = 0; i < args.length; i++) { preparedStatement.setObject(i + 1, args[i]); } preparedStatement.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { JdbcTools.release(null, preparedStatement, connection); } } @Override public <T> T get(Class<T> clazz, String sql, Object... args) { //获取 id=4 的 customers 数据表的记录, 并打印 T object = null; Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; ResultSetMetaData resultSetMetaData = null; try { connection = JdbcTools.getConnection(); preparedStatement = connection.prepareStatement(sql); for (int i = 0; i < args.length; i++) { preparedStatement.setObject(i + 1, args[i]); } resultSet = preparedStatement.executeQuery(); resultSetMetaData = resultSet.getMetaData(); if (resultSet.next()) { object = clazz.newInstance(); for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) { String fieldName = resultSetMetaData.getColumnLabel(i); Object fieldValue = resultSet.getObject(fieldName); //ReflectionUtils.setFieldValue(object, fieldName, fieldValue); BeanUtils.setProperty(object, fieldName, fieldValue); } } } catch (Exception e) { e.printStackTrace(); } finally { //6. 关闭数据库资源. JdbcTools.release(resultSet, preparedStatement, connection); } return object; }
javaEE中,java类的属性通过getter,setter来定义,get或set方法去掉get或set后那个名称首字母变小写。即为java类的属性。
以前叫的那个叫属性,即成员变量,称之为字段
操作java 类属性的一个工具包 beanutils。
其中有2个方法
setProperty()
getProperty()
上面的代码用的反射来给属性赋值的,专业的应该用beanutils工具类的方法BeanUtils.setProperty(object, fieldName, fieldValue);
阅读全文
0 0
- JavaJDBC学习-DAO
- JavaJDBC学习-JDBC
- javajdbc
- DAO学习
- JavaJdbc(一)
- JavaJDBC(1)_基础
- javaJDBC链接ORACLE
- javaJDBC链接数据库封装
- javaJDBC连接参数
- DAO编程学习
- 学习DAO模式
- DAO 学习笔记
- DAO学习笔记 2
- DAO模式学习笔记
- MFC DAO 数据库 学习
- DAO再学习
- DAO模式学习。
- Spring DAO 学习
- 资源导航
- hdu 6178 Monkeys (dfs+FastIO)
- 购物车(cookie和session各自的优缺点)
- 图文演示怎么将cad转换成pdf格式文件的技巧分享
- 异常记录
- JavaJDBC学习-DAO
- 【C++】链表实现的各种情况(含面试题)
- NYG的动态数点
- Take it easy II
- Lua —— 面向对象
- SPI总线 通俗易懂讲解
- Android屏幕分辨率和运行系统兼容性问题-总结
- Java调用MATLAB常见问题总结
- PollToRefresh