1.对数据库的操作方式:
1.传统jdbc编程的步骤: statement来执行操作
第一步:建个工程, 把 要操作的数据库的 驱动给 弄进来. 并且添加到
build path, (变成奶瓶 形状 )
第二步:
注册驱动
第三步:
获得连接, Connection对象
第四步:
获得可以 发送sql语句的 statement对象
第五步:
执行sql语句, 并且解析结果集
第六步:
释放资源
2.传统jdbc编程的步骤的发展: QueryRunner来执行操作
JDBC:---->六步实现java程序对数据库的操作
---->为了简化六步,出现JDBCUtils,封装了连接的获取;
---->为了提高并发访问效率,出现连接池Druid/c3p0,可以直接从连接池获得Connection,
并且这个时候对Connection的进行了装饰,返回的Connection自带连接池引用,close()方法自动归还连接到连接池;
----->由于连接池技术的出现,它本身也封装了创建连接的步骤,所有我们可以利用这一点,
在JDBCUtils中加以利用,这样就有了:利用连接池,改写JDBCUtils类,使JDBCUtils更加强大;
---->为了简化对结果集ResultSet的数据封装,出现了DBUtils,它直接对Connection /或者DataSource 操作;
DBUtils核心类QueryRunner,用于sql操作,ResultSetHandler(结果集处理器)用于对数据进行封装;
3.hibernate对数据库的操作: session来执行操作
//1.加载 .xml 核心配置文件Configuration config = new Configuration().configure();
//2.创建工厂
SessionFactory factory = config.buildSessionFactory();
//3.打开session
Session session = factory.openSession();
//4.开启事务
session.beginTransaction();
//5.业务操作
session.save(c);
//6.提交事务
session.getTransaction().commit();
//7.释放资源
factory.close();
4.hibernate的发展:(利用HibernateUtils 简化session获取) session来执行操作
//1.获得连接session = HibernateUtils.openSession();
//2.开启事务
transaction = session.beginTransaction();
//3.业务操作
session.save(c);
//4.提交事务
transaction.commit();
//5.释放资源
session.close();
5.hibernate中的查询方式:
QID : session.get(Customer.class, 1)hql : session.createQuery("from Customer c inner join fetch c.order");
sql : session.createSQLQuery("select * from t_customer")
QBC : session.createCriteria()
ogn : 对象图导航查询
6.Spring中的数据库操作: jdbcTemeplate 来执行操作
//1.创建数据库连接池DriverManagerDataSource dataSource = new DriverManagerDataSource();
//2.设置DataSource相关属性
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///springtest");
dataSource.setUsername("root");
dataSource.setPassword("123");
//3.创建一个jdbcTemeplate来完成操作
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
//4.执行操作
String sql = "update t_user set name='张三' where id=1";
jdbcTemplate.execute(sql );
7.Spring中的数据库操作发展: jdbcTemeplate 来执行操作 (其中 AccountDaoImpl extends JdbcDaoSupport)
this.getJdbcTemplate().update(sql,money,inname);解释:
/*这里AccountDaoImpl继承了JdbcDaoSupport,它里边本身有一个 属性 private JdbcTemplate jdbcTemplate;
还有一个方法 public final void setDataSource(DataSource dataSource)这个方法执行的结果是你
给它注入一个 dataSource ,它就给它的属性 jdbcTemplate赋值:
this.jdbcTemplate = createJdbcTemplate(dataSource);
然后你还可以通过 public final JdbcTemplate getJdbcTemplate() {
return this.jdbcTemplate;
}
获得 JdbcTemplate;*/
/*所以你要做的就是:
* 1.让你类的继承一个类: extends JdbcDaoSupport
* 2.在配置文件里给它的属性注入:<property name="dataSource" ref="comboPooledDataSource"></property>
* 3.你可以直接在你的类里获得template: this.getJdbcTemplate()
* */