欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring JDBC的使用方法詳解

 更新時(shí)間:2019年09月09日 10:23:37   作者:幸福的小耗子  
這篇文章主要介紹了Spring JDBC的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1、為什么使用Spring提供的JDBC的封裝?

因?yàn)镾pring提供了完整的模板類以及基類可以簡化開發(fā),我們只需寫少量的代碼即可。

2、實(shí)例講解

第一步:導(dǎo)入依賴  mysql-connector spring-jdbc spring-tx spring-core spring-beans spring-context 等等

第二步:數(shù)據(jù)庫的建立,配置xml

第三步:獲取jdbcTemplate對象

可以這樣獲得

 private JdbcTemplate jdbcTemplate;
  public void setDataSource(DataSource dataSource){
    this.jdbcTemplate=new JdbcTemplate(dataSource);
} 
<bean id="userDao" class="com.test.jdbc.dao.impl.UserDaoImpl">
    <property name="dataSource" ref="dataSource"/>
</bean>

也可以繼承JdbcDaoSupport,使用super.getJdbcTemplate()獲得

第四步:使用jdbcTemplate對象進(jìn)行增刪改查

增刪改使用update(),這個(gè)方法的參數(shù),第一個(gè)為sql語句,之后為可變參數(shù),傳入sql語句中的占位符

查詢使用queryForObject()方法的第一個(gè)參數(shù)為sql中需要的參數(shù),第三個(gè)參數(shù)為實(shí)現(xiàn)RowMapper接口的對象,

用于處理結(jié)果集,該方法要求返回單一的對象

query()該方法返回對象集合

public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {

  public void save(User user) {
    super.getJdbcTemplate().update("insert into user(id,username,password,date,salary) values(null,?,?,?,?)",
        user.getUsername(),user.getPassword(),user.getDate(),user.getSalary());

  }

  public void update(User user) {
    super.getJdbcTemplate().update("update user set username=?,password=?,date=?,salary=? where id=?",
        user.getUsername(), user.getPassword(), user.getDate(), user.getSalary(), user.getId());

  }

  public void delete(Integer id) {
    super.getJdbcTemplate().update("delete from user where id=?",id);
  }

  public User findById(Integer id) {
    /* List<User> user = super.getJdbcTemplate().query("select * from user where id=?", new Object[]{id},
        new RowMapper<User>() {
          @Override
          public User mapRow(ResultSet resultSet, int i) throws SQLException {
            User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setDate(resultSet.getDate("date"));
            user.setUsername(resultSet.getString("username"));
            user.setPassword(resultSet.getString("password"));
            user.setSalary(resultSet.getBigDecimal("salary"));
            return user;
          }
          //方法的返回值會直接封裝到集合中
        });
    return user.size()>0?user.get(0):null;*/

    User user = super.getJdbcTemplate().queryForObject("select * from user where id=?", new Object[]{id},
        new RowMapper<User>() {
          @Override
          public User mapRow(ResultSet resultSet, int i) throws SQLException {
            User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setDate(resultSet.getDate("date"));
            user.setUsername(resultSet.getString("username"));
            user.setPassword(resultSet.getString("password"));
            user.setSalary(resultSet.getBigDecimal("salary"));
            return user;
          }
        });
    return user;
  }

  public List<User> findAll() {
    List<User> users = super.getJdbcTemplate().query("select * from user",
        new RowMapper<User>() {
          @Override
          public User mapRow(ResultSet resultSet, int i) throws SQLException {
            User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setDate(resultSet.getDate("date"));
            user.setUsername(resultSet.getString("username"));
            user.setPassword(resultSet.getString("password"));
            user.setSalary(resultSet.getBigDecimal("salary"));
            return user;
          }
          //方法的返回值會直接封裝到集合中
        });
    return users;
  }

}

3、JdbcTemplate是JDBC核心包的中心類

知識點(diǎn)查詢地址:

https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/data-access.html#jdbc

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring BPP中如何優(yōu)雅的創(chuàng)建動態(tài)代理Bean詳解

    Spring BPP中如何優(yōu)雅的創(chuàng)建動態(tài)代理Bean詳解

    這篇文章主要給大家介紹了關(guān)于Spring BPP中如何優(yōu)雅的創(chuàng)建動態(tài)代理Bean的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • IDEA上運(yùn)行Flink任務(wù)的實(shí)戰(zhàn)教程

    IDEA上運(yùn)行Flink任務(wù)的實(shí)戰(zhàn)教程

    這篇文章主要介紹了IDEA上運(yùn)行Flink任務(wù)的實(shí)戰(zhàn)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • JVM 方法調(diào)用之動態(tài)分派(詳解)

    JVM 方法調(diào)用之動態(tài)分派(詳解)

    下面小編就為大家?guī)硪黄狫VM 方法調(diào)用之動態(tài)分派(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java實(shí)現(xiàn)synchronized鎖同步機(jī)制

    Java實(shí)現(xiàn)synchronized鎖同步機(jī)制

    synchronized是java內(nèi)置的同步鎖實(shí)現(xiàn),本文就詳細(xì)的介紹一下Java實(shí)現(xiàn)synchronized鎖同步機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • windows java.exe內(nèi)存暴漲解決、idea跑java\ tomcat內(nèi)存無限增長

    windows java.exe內(nèi)存暴漲解決、idea跑java\ tomcat內(nèi)存無限增長

    這篇文章主要介紹了windows java.exe內(nèi)存暴漲解決、idea跑 java\ tomcat內(nèi)存無限增長,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • spring security登錄成功后通過Principal獲取名返回空問題

    spring security登錄成功后通過Principal獲取名返回空問題

    這篇文章主要介紹了spring security登錄成功后通過Principal獲取名返回空問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • java實(shí)現(xiàn)在一張大圖片上添加小圖及文字

    java實(shí)現(xiàn)在一張大圖片上添加小圖及文字

    這篇文章主要介紹了java實(shí)現(xiàn)在一張大圖上添加小圖及文字,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java countDownLatch如何實(shí)現(xiàn)多線程任務(wù)阻塞等待

    Java countDownLatch如何實(shí)現(xiàn)多線程任務(wù)阻塞等待

    這篇文章主要介紹了Java countDownLatch如何實(shí)現(xiàn)多線程任務(wù)阻塞等待,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot動態(tài)修改yml配置文件的方法詳解

    SpringBoot動態(tài)修改yml配置文件的方法詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot動態(tài)修改yml配置文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java自定義線程池的實(shí)現(xiàn)示例

    Java自定義線程池的實(shí)現(xiàn)示例

    本文主要介紹了Java自定義線程池的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論