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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2023/12/18 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring4基础 学习笔记(5) ---- Spring与Dao 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spring與DAO: Spring與JDBC模板:為了避免直接使用JDBC而帶來的復雜且冗長的代碼,Spring提供了一個強有力的模板類:JdbcTemplate 來簡化JDBC操作。并且,數據源DataSource對象與模板JdbcTemplate對象均可通過Bean的形式定義在配置文件中,充分發揮了依賴注入的特性。 依賴jar:使用c3p0數據庫連接池,Spring的JDBC.jar,Spring的事務jar,數據庫驅動 ? 一般的Service層訪問Dao層: StudentServiceImpl實現-------->IStudentService接口 StudentServiceImpl 持有 Dao的引用 ,由容器注入,Impl的實現依賴于Dao(調用Dao接口的方法) Dao接口定義了訪問DB的方法 定義Dao的實現類,將來注入StudentServiceImpl的類 使用JdbTemplate,Dao實現類?繼承?JdbcDaoSupport,JdbcTemplate為該類的成員變量 增刪改統一使用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()); ? ? ? ? ? ? ? //可變參重載方法 ??????} 三種數據源的注冊: ?? ???<!-- c3p0數據源 --> ???? <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數據源 --> <!--????? <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內置數據源 --> ???? <!-- <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數據源 --> ???? <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> ?需要注冊properties文件: 方式1)bean: ??????<!-- 注冊jdbcproperties --> ??????<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > ????????????<property name="location" value="classpath:jdbc.properties"/> ??????</bean> 使用locations注冊多個 方式2):需要添加context約束 <context:property-placeholder location="classpath:jdbc.properties"/> 給DaoImpl對象注冊模板,再給模板注冊DataSource的步驟可以簡化為:直接給DaoImpl對象(JdbcDaoSupport)注冊DataSource,因為JdbcDaoSupport的setDataSource方法會以DataSource對象為參數創建模板 ?? ???<!-- Dao和DataSource --> ??? <bean id="StudentDao" class="StudentDaoImpl"> ??? ??<property name="dataSource" ref="c3p0Source"/> ??? </bean> 關系: service調用Dao,向serviceImpl注入DaoImpl DaoImpl繼承自JdbcDaoSupport 向DaoImpl注入模板對象 向模板對象注入DataSource對象 模板實現增刪改都使用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); ? ? ? ? ?//可變參重載方法 ??????} 對于對象集合的查詢queryForList不會將查詢結果封裝為對象,需要自己封裝: 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接口實現類中將結果集封裝。 注意: //這個rs不是select查詢的所有結果集,而是這個結果集遍歷出來的一行 ??????@Override ??????public Student mapRow(ResultSet rs, int rowNum) throws SQLException { ????????????// TODO Auto-generated method stub ???????????? ????????????return null; ??????} JdbcTemPlate對象是多例的,的生命周期很短,就在一個方法內有效: 系統會為每一個使用模板對象的線程,創建一個JdbcTemplate實例,并且在該線程結束時,自動釋放實例。

轉載于:https://www.cnblogs.com/coderlynn/p/8947944.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。