日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring4基础 学习笔记(5) ---- Spring与Dao

發(fā)布時(shí)間:2023/12/18 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring4基础 学习笔记(5) ---- Spring与Dao 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Spring與DAO: Spring與JDBC模板:為了避免直接使用JDBC而帶來(lái)的復(fù)雜且冗長(zhǎng)的代碼,Spring提供了一個(gè)強(qiáng)有力的模板類:JdbcTemplate 來(lái)簡(jiǎn)化JDBC操作。并且,數(shù)據(jù)源DataSource對(duì)象與模板JdbcTemplate對(duì)象均可通過(guò)Bean的形式定義在配置文件中,充分發(fā)揮了依賴注入的特性。 依賴jar:使用c3p0數(shù)據(jù)庫(kù)連接池,Spring的JDBC.jar,Spring的事務(wù)jar,數(shù)據(jù)庫(kù)驅(qū)動(dòng) ? 一般的Service層訪問(wèn)Dao層: StudentServiceImpl實(shí)現(xiàn)-------->IStudentService接口 StudentServiceImpl 持有 Dao的引用 ,由容器注入,Impl的實(shí)現(xiàn)依賴于Dao(調(diào)用Dao接口的方法) Dao接口定義了訪問(wèn)DB的方法 定義Dao的實(shí)現(xiàn)類,將來(lái)注入StudentServiceImpl的類 使用JdbTemplate,Dao實(shí)現(xiàn)類?繼承?JdbcDaoSupport,JdbcTemplate為該類的成員變量 增刪改統(tǒng)一使用update方法: ??????@Override ??????public void insertStudent(Student student) { ????????????String sql = "insert into student(name,age) values(?,?)"; ????????????// TODO Auto-generated method stub ????????????this.getJdbcTemplate().update(sql, student.getName(),student.getAge()); ? ? ? ? ? ? ? //可變參重載方法 ??????} 三種數(shù)據(jù)源的注冊(cè): ?? ???<!-- c3p0數(shù)據(jù)源 --> ???? <bean id="c3p0Source" class="com.mchange.v2.c3p0.ComboPooledDataSource"> ??? ??<property name="driverClass" value="com.mysql.jdbc.Driver"/> ??? ??<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/> ??? ??<property name="user" value="root"/> ??? ??<property name="password" value="1234"/> ??? </bean> ? ? ? ? ????<!-- dbcp數(shù)據(jù)源 --> <!--????? <bean id="dbcpSource" class="org.apache.commons.dbcp.BasicDataSource.class"> ??? ??<property name="driverClassName" value="com.mysql.jdbc.Driver"/> ??? ??<property name="url" value="jdbc:mysql://localhost:3306/test"/> ??? ??<property name="username" value="root"/> ??? ??<property name="password" value="1234"/> ??? </bean>? --> ? ? ??????<!-- Spring內(nèi)置數(shù)據(jù)源 --> ???? <!-- <bean id="springSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> ??? ??<property name="driverClassName" value="com.mysql.jdbc.Driver"/> ??? ??<property name="url" value="jdbc:mysql://localhost:3306/test"/> ??? ??<property name="username" value="root"/> ??? ??<property name="password" value="1234"/> ??? </bean>??? --> 使用properties文件: ?? ???<!-- c3p0數(shù)據(jù)源 --> ???? <bean id="c3p0Source" class="com.mchange.v2.c3p0.ComboPooledDataSource"> ??? ??<property name="driverClass" value="${jdbc.driver}"/> ??? ??<property name="jdbcUrl" value="${jdbc.url}"/> ??? ??<property name="user" value="${jdbc.username}"/> ??? ??<property name="password" value="${jdbc.password}"/> ??? </bean> ?需要注冊(cè)properties文件: 方式1)bean: ??????<!-- 注冊(cè)jdbcproperties --> ??????<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > ????????????<property name="location" value="classpath:jdbc.properties"/> ??????</bean> 使用locations注冊(cè)多個(gè) 方式2):需要添加context約束 <context:property-placeholder location="classpath:jdbc.properties"/> 給DaoImpl對(duì)象注冊(cè)模板,再給模板注冊(cè)DataSource的步驟可以簡(jiǎn)化為:直接給DaoImpl對(duì)象(JdbcDaoSupport)注冊(cè)DataSource,因?yàn)镴dbcDaoSupport的setDataSource方法會(huì)以DataSource對(duì)象為參數(shù)創(chuàng)建模板 ?? ???<!-- Dao和DataSource --> ??? <bean id="StudentDao" class="StudentDaoImpl"> ??? ??<property name="dataSource" ref="c3p0Source"/> ??? </bean> 關(guān)系: service調(diào)用Dao,向serviceImpl注入DaoImpl DaoImpl繼承自JdbcDaoSupport 向DaoImpl注入模板對(duì)象 向模板對(duì)象注入DataSource對(duì)象 模板實(shí)現(xiàn)增刪改都使用update方法: ??????@Override ??????public void insertStudent(Student student) { ????????????String sql = "insert into student(name,age) values(?,?)"; ????????????// TODO Auto-generated method stub ????????????this.getJdbcTemplate().update(sql, student.getName(),student.getAge()); ??????} ??????@Override ??????public void deleteStudent(Student student) { ????????????// TODO Auto-generated method stub ????????????String sql = "delete from student where id=?"; ????????????this.getJdbcTemplate().update(sql,student.getId()); ??????} ?????? ??????@Override ??????public void updateStudent(Student student) { ????????????// TODO Auto-generated method stub ????????????String sql = "update student set name=?,age=? where id=?"; ????????????this.getJdbcTemplate().update(sql, student.getName(),student.getAge(),student.getId()); ??????} 查詢使用query方法 ??????@Override ??????public List<String> selectAllStudentsNames() { ????????????// TODO Auto-generated method stub ????????????String sql = "select name from student"; ????????????return this.getJdbcTemplate().queryForList(sql , String.class); ??????} ??????@Override ??????public String selectStudentNameById(int id) { ????????????String sql = "select name from student where id=?"; ????????????// TODO Auto-generated method stub ????????????return this.getJdbcTemplate().queryForObject(sql,String.class,id); ? ? ? ? ?//可變參重載方法 ??????} 對(duì)于對(duì)象集合的查詢queryForList不會(huì)將查詢結(jié)果封裝為對(duì)象,需要自己封裝: this.getTemplate().query(sql,rowMapper); ? ?? ?????return this.getJdbcTemplate().query(sql,new RowMapper<Student>() { ??????????????????@Override ??????????????????public Student mapRow(ResultSet rs, int rowNum) throws SQLException { ????????????????????????// TODO Auto-generated method stub ????????????????????????return null; ??????????????????} ?????????????????? ????????????}); 在RowMapper接口實(shí)現(xiàn)類中將結(jié)果集封裝。 注意: //這個(gè)rs不是select查詢的所有結(jié)果集,而是這個(gè)結(jié)果集遍歷出來(lái)的一行 ??????@Override ??????public Student mapRow(ResultSet rs, int rowNum) throws SQLException { ????????????// TODO Auto-generated method stub ???????????? ????????????return null; ??????} JdbcTemPlate對(duì)象是多例的,的生命周期很短,就在一個(gè)方法內(nèi)有效: 系統(tǒng)會(huì)為每一個(gè)使用模板對(duì)象的線程,創(chuàng)建一個(gè)JdbcTemplate實(shí)例,并且在該線程結(jié)束時(shí),自動(dòng)釋放實(shí)例。

轉(zhuǎn)載于:https://www.cnblogs.com/coderlynn/p/8947944.html

總結(jié)

以上是生活随笔為你收集整理的Spring4基础 学习笔记(5) ---- Spring与Dao的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。