标签:
1.数据库的元数据
元数据:数据库,或则数据库表,表中的字段额度一些信息
比如数据库名称,驱动,表中的主键的名称
主要完成一些通用性比较高的代码
数据库里面,有三类元数据:
第一类:数据库元数据
获取元数据:Connection.getMateData();得到数据元数据
DatabaseMateData里面的方法:getDriverName(),getURL(),getUserName(),
getTables(), rs=db.getTables("", "", "user", new String[]{"TABLE"});前面两个是空,第三个是表名,
getPrimaryKeys()获取表的主键
第二类:参数元数据
通过PraparedStatatment 里面的getParaneterMetaData()里面得到参数元数据,ParameterMetaData代表一个参数
getParameterMetaData getParameterTypeName();
在mysql里面对参数元参数支持不是很好
第三类:结果集元数据
ResultSetMetaData对象:getParameterCount():得到参数的数量(就是?的数量);
2.DBUtils框架的使用
DBUtils是Apache 组织提供的一个开源 JDBC工具类库。
操作的dubuils里面的类都在org.apache..包里面
dbutils使用很简单,在很多公司里面不想使用hibernate,因为使用hibernate如果使用不好,会产生性能问题,
很多公司而是使用DBUtils框架完成jdbc的操作。
想要使用DBUtils框架,首先导入jar包。
需要使用到的类有两个
第一个 : DbUtils
一些方法:
- close(Connection conn)
- loadDriver(String driverClassName)
- rollback(Connection conn)
第二个:QueryRunner:完成对数据库的crud的操作
方法:
- 构造方法,常用的有两个
QueryRunner()
如果使用没有参数的构造方法,需要使用下面的方法
- update(Connection conn, String sql, Object... params)
- query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
QueryRunner(DataSource ds)(重点掌握)
如果使用有参数的构造方法 ,使用里面参数是DataSource的构造方法,
- update(String sql, Object... params) :完成增加修改和删除的操作
- query(String sql, ResultSetHandler<T> rsh, Object... params):完成查询的操作
(1)使用dbutils使用增加,修改和删除的操作
代码
//实现增加的操作
QueryRunner runner = new QueryRunner(MyJDBCUtils.getDataSource());
//update(String sql, Object... params) :完成增加修改和删除的操作
runner.update("insert into user values(?,?,?)", 666,"孙悟空",20000);
//实现修改的操作
runner.update("update user set sal=? where id=?", 555,111);
//实现删除的操作
runner.update("delete from user where id=?", 222);
一个接口
ResultSetHandler<T>
(2)使用dbutils使用查询的操作
显示如果使用接口实现查询更加的复杂,但是在dbutils里面提供了很多这个接口的实现类,根据这些实现类完成想要的格式的封装
直接new 实现类来实现操作
ArrayHandler:把数据封装到一个数组里面
Object[] objs = runner.query("select * from user where id=?", new ArrayHandler(), 111);
System.out.println(Arrays.toString(objs));
ArrayListHandler:把每行数据先放到数组里面,把多个数组放到list里面
List<Object[]> list = runner.query("select * from user", new ArrayListHandler());
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
BeanHandler:把数据封装到对象里面(重点掌握)
User user = runner.query("select * from user where id=?", new BeanHandler<User>(User.class), 666);
System.out.println(user.getId()+" "+user.getName()+" "+user.getSal());
BeanListHandler:把数据放到对象里面,把多个对象放到list里面(重点掌握)
List<User> list = runner.query("select * from user", new BeanListHandler<User>(User.class));
for (User user : list) {
System.out.println(user.getId()+" "+user.getName()+" "+user.getSal());
}
MapHandler:把数据封装到map里面
Map<String, Object> map = runner.query("select * from user where id=?", new MapHandler(), 333);
System.out.println(map);
MapListHandler:先把数据封装到map里面,在把多个map放到list里面
List<Map<String, Object>> list = runner.query("select * from user", new MapListHandler());
for (Map<String, Object> map : list) {
System.out.println(map);
}
ColumnListHandler:查询某一列的值,把值放到list里面
List<Object> list = runner.query("select name from user",new ColumnListHandler());
for (Object object : list) {
System.out.println(object);
}
KeyedHandler: 先把数据放到map里面,把封装之后的map作为一个value放到另外的一个map里面
Map<Object, Map<String, Object>> map = runner.
query("select * from user", new KeyedHandler("name"));
System.out.println(map);
calarHandler : 进行单值查询 select count(*) from user;
Object o = runner.query("select count(*) from user", new ScalarHandler());
System.out.println((Long)o);
掌握的实现类:BeanHandler BeanListHandler MapListHandler
JavaWeb系列之十四(DBUtil)
标签:
原文地址:http://blog.csdn.net/lois_yue/article/details/46621295