Spring和数据库编程
传统JDBC代码的弊端:
在传统的JDDBC代码中使用了大量的Try catch 语句,这样做造成了代码泛滥,执行一条很简单的Sql语句都
显得十分的复杂,并且还要执行很多次的数据库资源打开和关闭,为此Spring提供了JdbcTemplate来解决此问题。
此时可以在Spring的配置文件中,配置一个DataSource(数据源),这里可以使用DBCP数据源,使用该数据源的时
候需要配置的类是:BasicDataSource类,为这个类注入一些必要的数据库信息。
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
这样就为JdbcTemplate这个类注册成一个bean,并且注入了dataSource属性,就是刚才定义的dbcp数据源。
这样就可以获取这个定义好的JdbcTemplate的bean了。然后就可以来调用JdbcTemplate对象的query()方法
来进行查询了或者是调用update()方法来进行增删改操作。需要注意的是,使用query()或者queryForObject()
进行查询的时候要对结果集进行处理,一般的做法是,实现RowMapper接口的匿名内部类并覆盖原来的方法 mapRow
创建一个 封装类对象,通过该对象的set方法来将获取到的ResultSet类型的对象各个字段的值封装进去,并返回
该封装类对象。 或者是,使用lambda表达式的方式,即query(sql,(ResultSet rs,int rownum)->{
封装类对象
调用set方法设置从rs对象中获取的值
return 封装类对象
});
目前流行的方式是MyBatis-Spring组合的形式,因为Spring Ioc可以有效的管理各种Java资源,通过Aop框架,数据
库事务可以委托给Spring管理,消除了一大部分事务代码,配合MyBatis的高灵活,可配置,可优化sql等特性完全
可以构建高性能大型网站。
使用之前需要先导入MyBatis-Spring.jar包,然后在Spring的配置文件中配置dataSource,配置完数据源后,再来
配置SqlSessionFactoryBean,并且为他注入两个属性,一个是dataSource 另一个就是Mybatis的配置文件。
我们然后就可以配置SqlSessionTemplate了,需要注入SqlSessionFactory。
然后可以获取SqlSessionTemplate对象来直接调用增删改查,但是我们希望通过接口的方式来操作数据库,这时可以配置一个
bean就是,MapperScannerConfigurer,来扫描接口所在的包,注入basePackage属性,和SqlSessionFactory
还有注解的类annotationClass,意思是带有这个注解接口可以被扫描成Mapper对象,存放在容器中。