spring对JDBC的支持
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                spring对JDBC的支持
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                
                            
                            
                            從來(lái)沒(méi)使用過(guò),感覺(jué)還是很有意思的,有工夫可以玩完,呵呵。  spring提供了類org.springframework.jdbc.core.JdbcTemplate,它借助配置文件獲取數(shù)據(jù)庫(kù)信息,實(shí)現(xiàn)了對(duì)JDBC開(kāi)發(fā)過(guò)程中的加載驅(qū)動(dòng),創(chuàng)建連接,執(zhí)行sql語(yǔ)句,對(duì)事務(wù)進(jìn)行處理以及一些數(shù)據(jù)類型轉(zhuǎn)化等操作的封裝。只需要程序員對(duì)其傳入sql語(yǔ)句和必要的參數(shù)即可輕松進(jìn)行JDBC編程。  Dao類:    public class StudentDaoJDBCImpl implements StudentDao { 
??private JdbcTemplate template;
????????//template的setter.getter方法
??@Override
??public void delete(Student s) {
????deleteById(s.getId());
??}
??@Override
??public void deleteById(Integer id) {
????String sql = "delete from spring_student where id=?";
????Object[] args = { id };// 數(shù)組元素依次對(duì)應(yīng)sql語(yǔ)句中的?
????template.update(sql, args);// 只需傳sql語(yǔ)句和參數(shù)數(shù)組,template會(huì)自動(dòng)加載驅(qū)動(dòng),創(chuàng)建連結(jié),執(zhí)行sql語(yǔ)句,并且進(jìn)行事務(wù)處理
??}
??@Override
??public void insert(Student s) {
????String sql = "insert into spring_student(id,name,birthday) values(spring_stu_seq.nextval,?,?)";
????Object[] args = { s.getName(), s.getBirthday() };//template會(huì)對(duì)Date類型數(shù)據(jù)進(jìn)行轉(zhuǎn)化
????template.update(sql, args);
??}
??@Override
??public Student queryById(Integer id) {
????String sql = "select id,name,birthday from spring_student where id=?";
????Object[] args = { id };
????final Student s = new Student();
????template.query(sql, args, new RowCallbackHandler() {
??????//它要求程序員自己在RowCallbackHandler類型對(duì)象的proce***ow方法中對(duì)結(jié)果集進(jìn)行處理
??????@Override
??????public void proce***ow(ResultSet rs) throws SQLException {
????????if (!(rs.isAfterLast())) {// 把查詢結(jié)果封裝到一個(gè)對(duì)象中
??????????s.setId(rs.getInt(1));
??????????s.setName(rs.getString(2));
??????????s.setBirthday(rs.getDate(3));
????????}
??????}
????});
????if (s.getId() == null) {
??????return null;
????} else {
??????return s;
????}
??}
??@Override
??public List<Student> queryAll() {
????String sql="select id,name,birthday from spring_student";
????List<Student> ret=template.query(sql, new RowMapper(){
??????//它要求程序員自己在RowMapper類型對(duì)象的mapRow方法中說(shuō)明結(jié)果集中每條記錄如何封裝成一個(gè)對(duì)象,
????????????//template.query方法會(huì)自動(dòng)把對(duì)象加入到集合中。
??????@Override
??????public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
????????//rs:結(jié)果集
????????//rowNum:迭代次數(shù)
????????Student s=new Student();
????????s.setId(rs.getInt(1));
????????s.setName(rs.getString(2));
????????s.setBirthday(rs.getDate(3));
????????return s;
??????}
????????
????});
????return ret;
??}
} 配置: <beans>
??<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
????<property name="driverClassName">
??????<value>oracle.jdbc.driver.OracleDriver</value>
????</property>
????<property name="url">
??????<value>jdbc:oracle:thin:@localhost:1521:orcl10</value>
????</property>
????<property name="username">
??????<value>scott</value>
????</property>
????<property name="password">
??????<value>yf123</value>
????</property>
??</bean>
??<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
????<property name="dataSource">
??????<ref local="dataSource"/>
????</property>
??</bean>
??<bean id="dao" class="com.yangfei.spring.jdbc.dao.StudentDaoJDBCImpl">
????<property name="template">
??????<ref local="jdbcTemplate"/>
????</property>
??</bean>
</beans> 測(cè)試: public static void main(String[] args) {
????ApplicationContext ctx=new ClassPathXmlApplicationContext("jdbc.xml");
????StudentDao dao=(StudentDao)ctx.getBean("dao");
????System.out.println(dao.queryById(2));
????
????//dao.deleteById(1);
????Student s=new Student();
????s.setName("xiaozhang");
????s.setBirthday(new Date());
????dao.insert(s);
                        
                        
                        ??private JdbcTemplate template;
????????//template的setter.getter方法
??@Override
??public void delete(Student s) {
????deleteById(s.getId());
??}
??@Override
??public void deleteById(Integer id) {
????String sql = "delete from spring_student where id=?";
????Object[] args = { id };// 數(shù)組元素依次對(duì)應(yīng)sql語(yǔ)句中的?
????template.update(sql, args);// 只需傳sql語(yǔ)句和參數(shù)數(shù)組,template會(huì)自動(dòng)加載驅(qū)動(dòng),創(chuàng)建連結(jié),執(zhí)行sql語(yǔ)句,并且進(jìn)行事務(wù)處理
??}
??@Override
??public void insert(Student s) {
????String sql = "insert into spring_student(id,name,birthday) values(spring_stu_seq.nextval,?,?)";
????Object[] args = { s.getName(), s.getBirthday() };//template會(huì)對(duì)Date類型數(shù)據(jù)進(jìn)行轉(zhuǎn)化
????template.update(sql, args);
??}
??@Override
??public Student queryById(Integer id) {
????String sql = "select id,name,birthday from spring_student where id=?";
????Object[] args = { id };
????final Student s = new Student();
????template.query(sql, args, new RowCallbackHandler() {
??????//它要求程序員自己在RowCallbackHandler類型對(duì)象的proce***ow方法中對(duì)結(jié)果集進(jìn)行處理
??????@Override
??????public void proce***ow(ResultSet rs) throws SQLException {
????????if (!(rs.isAfterLast())) {// 把查詢結(jié)果封裝到一個(gè)對(duì)象中
??????????s.setId(rs.getInt(1));
??????????s.setName(rs.getString(2));
??????????s.setBirthday(rs.getDate(3));
????????}
??????}
????});
????if (s.getId() == null) {
??????return null;
????} else {
??????return s;
????}
??}
??@Override
??public List<Student> queryAll() {
????String sql="select id,name,birthday from spring_student";
????List<Student> ret=template.query(sql, new RowMapper(){
??????//它要求程序員自己在RowMapper類型對(duì)象的mapRow方法中說(shuō)明結(jié)果集中每條記錄如何封裝成一個(gè)對(duì)象,
????????????//template.query方法會(huì)自動(dòng)把對(duì)象加入到集合中。
??????@Override
??????public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
????????//rs:結(jié)果集
????????//rowNum:迭代次數(shù)
????????Student s=new Student();
????????s.setId(rs.getInt(1));
????????s.setName(rs.getString(2));
????????s.setBirthday(rs.getDate(3));
????????return s;
??????}
????????
????});
????return ret;
??}
} 配置: <beans>
??<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
????<property name="driverClassName">
??????<value>oracle.jdbc.driver.OracleDriver</value>
????</property>
????<property name="url">
??????<value>jdbc:oracle:thin:@localhost:1521:orcl10</value>
????</property>
????<property name="username">
??????<value>scott</value>
????</property>
????<property name="password">
??????<value>yf123</value>
????</property>
??</bean>
??<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
????<property name="dataSource">
??????<ref local="dataSource"/>
????</property>
??</bean>
??<bean id="dao" class="com.yangfei.spring.jdbc.dao.StudentDaoJDBCImpl">
????<property name="template">
??????<ref local="jdbcTemplate"/>
????</property>
??</bean>
</beans> 測(cè)試: public static void main(String[] args) {
????ApplicationContext ctx=new ClassPathXmlApplicationContext("jdbc.xml");
????StudentDao dao=(StudentDao)ctx.getBean("dao");
????System.out.println(dao.queryById(2));
????
????//dao.deleteById(1);
????Student s=new Student();
????s.setName("xiaozhang");
????s.setBirthday(new Date());
????dao.insert(s);
總結(jié)
以上是生活随笔為你收集整理的spring对JDBC的支持的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 宽带拨号时出现错误列表
- 下一篇: 怎样建设WEB Cache
