Spring JDBC的使用方法詳解
1、為什么使用Spring提供的JDBC的封裝?
因?yàn)镾pring提供了完整的模板類(lèi)以及基類(lèi)可以簡(jiǎn)化開(kāi)發(fā),我們只需寫(xiě)少量的代碼即可。
2、實(shí)例講解
第一步:導(dǎo)入依賴(lài) mysql-connector spring-jdbc spring-tx spring-core spring-beans spring-context 等等
第二步:數(shù)據(jù)庫(kù)的建立,配置xml
第三步:獲取jdbcTemplate對(duì)象
可以這樣獲得
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對(duì)象進(jìn)行增刪改查
增刪改使用update(),這個(gè)方法的參數(shù),第一個(gè)為sql語(yǔ)句,之后為可變參數(shù),傳入sql語(yǔ)句中的占位符
查詢(xún)使用queryForObject()方法的第一個(gè)參數(shù)為sql中需要的參數(shù),第三個(gè)參數(shù)為實(shí)現(xiàn)RowMapper接口的對(duì)象,
用于處理結(jié)果集,該方法要求返回單一的對(duì)象
query()該方法返回對(duì)象集合
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; } //方法的返回值會(huì)直接封裝到集合中 }); 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; } //方法的返回值會(huì)直接封裝到集合中 }); return users; } }
3、JdbcTemplate是JDBC核心包的中心類(lèi)
知識(shí)點(diǎn)查詢(xún)地址:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring BPP中如何優(yōu)雅的創(chuàng)建動(dòng)態(tài)代理Bean詳解
這篇文章主要給大家介紹了關(guān)于Spring BPP中如何優(yōu)雅的創(chuàng)建動(dòng)態(tài)代理Bean的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03IDEA上運(yùn)行Flink任務(wù)的實(shí)戰(zhàn)教程
這篇文章主要介紹了IDEA上運(yùn)行Flink任務(wù)的實(shí)戰(zhàn)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10JVM 方法調(diào)用之動(dòng)態(tài)分派(詳解)
下面小編就為大家?guī)?lái)一篇JVM 方法調(diào)用之動(dòng)態(tài)分派(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Java實(shí)現(xiàn)synchronized鎖同步機(jī)制
synchronized是java內(nèi)置的同步鎖實(shí)現(xiàn),本文就詳細(xì)的介紹一下Java實(shí)現(xiàn)synchronized鎖同步機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下2021-11-11windows java.exe內(nèi)存暴漲解決、idea跑java\ tomcat內(nèi)存無(wú)限增長(zhǎng)
這篇文章主要介紹了windows java.exe內(nèi)存暴漲解決、idea跑 java\ tomcat內(nèi)存無(wú)限增長(zhǎng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01spring security登錄成功后通過(guò)Principal獲取名返回空問(wèn)題
這篇文章主要介紹了spring security登錄成功后通過(guò)Principal獲取名返回空問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03java實(shí)現(xiàn)在一張大圖片上添加小圖及文字
這篇文章主要介紹了java實(shí)現(xiàn)在一張大圖上添加小圖及文字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java countDownLatch如何實(shí)現(xiàn)多線程任務(wù)阻塞等待
這篇文章主要介紹了Java countDownLatch如何實(shí)現(xiàn)多線程任務(wù)阻塞等待,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10SpringBoot動(dòng)態(tài)修改yml配置文件的方法詳解
這篇文章主要為大家詳細(xì)介紹了SpringBoot動(dòng)態(tài)修改yml配置文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03