Spring框架中的JdbcTemplate
JdbcTemplate
1、什么是 JdbcTemplate
(1)Spring 框架對 JDBC 進行封裝,使用 JdbcTemplate 方便實現(xiàn)對數(shù)據(jù)庫操作 JDBC講解
2、準(zhǔn)備工作
(1)引入相關(guān) jar 包
(2)在 spring 配置文件配置數(shù)據(jù)庫連接池
<!-- 數(shù)據(jù)庫連接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="jdbc:mysql:///user_db" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> </bean>
(3)配置 JdbcTemplate 對象,注入 DataSource
<!-- JdbcTemplate 對象 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入 dataSource 源碼中是set方式構(gòu)造,所以用property。有參構(gòu)造用的是constructor-arg--> <property name="dataSource" ref="dataSource"></property> </bean>
(4)創(chuàng)建 service 類,創(chuàng)建 dao 類,在 dao 注入 jdbcTemplate 對象
配置文件
<!-- 組件掃描 --> <context:component-scan base-package="com.atguigu"></context:component-scan>
Service類
@Service public class BookService { //注入 dao @Autowired private BookDao bookDao; }
Dao類
@Repository public class BookDaoImpl implements BookDao { //注入 JdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; }
JdbcTemplate 操作數(shù)據(jù)庫(添加)
1、對應(yīng)數(shù)據(jù)庫創(chuàng)建實體類
2、編寫 service 和 dao
(1)在 dao 進行數(shù)據(jù)庫添加操作
(2)調(diào)用 JdbcTemplate 對象里面 update 方法實現(xiàn)添加操作
- 第一個參數(shù):sql 語句
- 第二個參數(shù):可變參數(shù),設(shè)置 sql 語句值
@Repository public class BookDaoImpl implements BookDao { //注入 JdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; //添加的方法 @Override public void add(Book book) { //1 創(chuàng)建 sql 語句 String sql = "insert into t_book values(?,?,?)"; //2 調(diào)用方法實現(xiàn) Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()}; int update = jdbcTemplate.update(sql,args); //返回值是變化的行數(shù) System.out.println(update); } }
3、測試類
@Test public void testJdbcTemplate() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); //要調(diào)用Service類中的對象 BookService bookService = context.getBean("bookService", BookService.class); Book book = new Book(); book.setUserId("1"); book.setUsername("java"); book.setUstatus("a"); bookService.addBook(book); }
JdbcTemplate 操作數(shù)據(jù)庫(修改和刪除)
1、修改
@Override public void updateBook(Book book) { String sql = "update t_book set username=?,ustatus=? where user_id=?"; Object[] args = {book.getUsername(), book.getUstatus(),book.getUserId()}; int update = jdbcTemplate.update(sql, args); System.out.println(update); }
2、刪除
@Override public void delete(String id) { String sql = "delete from t_book where user_id=?"; int update = jdbcTemplate.update(sql, id); System.out.println(update); }
JdbcTemplate 操作數(shù)據(jù)庫(查詢返回某個值)
1、查詢表里面有多少條記錄,返回是某個值
2、使用 JdbcTemplate 實現(xiàn)查詢返回某個值代碼
- 第一個參數(shù):sql 語句
- 第二個參數(shù):返回類型 Class
//查詢表記錄數(shù) @Override public int selectCount() { String sql = "select count(*) from t_book"; Integer count = jdbcTemplate.queryForObject(sql, Integer.class); return count; }
JdbcTemplate 操作數(shù)據(jù)庫(查詢返回對象)
1、場景:查詢圖書詳情
2、JdbcTemplate 實現(xiàn)查詢返回對象
- 第一個參數(shù):sql 語句
- 第二個參數(shù):RowMapper 是接口,針對返回不同類型數(shù)據(jù),使用這個接口里面實現(xiàn)類完成數(shù)據(jù)封裝
- 第三個參數(shù):sql 語句值
//查詢返回對象 @Override public Book findBookInfo(String id) { String sql = "select * from t_book where user_id=?"; //調(diào)用方法 Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id); return book; }
JdbcTemplate 操作數(shù)據(jù)庫(查詢返回集合)
1、場景:查詢圖書列表分頁…
2、調(diào)用 JdbcTemplate 方法實現(xiàn)查詢返回集合
- 第一個參數(shù):sql 語句
- 第二個參數(shù):RowMapper 是接口,針對返回不同類型數(shù)據(jù),使用這個接口里面實現(xiàn)類完成數(shù)據(jù)封裝
- 第三個參數(shù):sql 語句值
//查詢返回集合 @Override public List<Book> findAllBook() { String sql = "select * from t_book"; //調(diào)用方法 List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class)); return bookList; }
JdbcTemplate 操作數(shù)據(jù)庫(批量操作)
1、批量操作:操作表里面多條記錄
2、JdbcTemplate 實現(xiàn)批量添加操作
- 第一個參數(shù):sql 語句
- 第二個參數(shù):List 集合,添加多條記錄數(shù)據(jù)
//批量添加 @Override public void batchAddBook(List<Object[]> batchArgs) { String sql = "insert into t_book values(?,?,?)"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(ints)); } //批量添加測試 List<Object[]> batchArgs = new ArrayList<>(); Object[] o1 = {"3","java","a"}; Object[] o2 = {"4","c++","b"}; Object[] o3 = {"5","MySQL","c"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); //調(diào)用批量添加 bookService.batchAdd(batchArgs);
3、JdbcTemplate 實現(xiàn)批量修改操作
//批量修改 @Override public void batchUpdateBook(List<Object[]> batchArgs) { String sql = "update t_book set username=?,ustatus=? where user_id=?"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(ints)); } //批量修改 List<Object[]> batchArgs = new ArrayList<>(); Object[] o1 = {"java0909","a3","3"}; Object[] o2 = {"c++1010","b4","4"}; Object[] o3 = {"MySQL1111","c5","5"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); //調(diào)用方法實現(xiàn)批量修改 bookService.batchUpdate(batchArgs);
4、JdbcTemplate 實現(xiàn)批量刪除操作
//批量刪除 @Override public void batchDeleteBook(List<Object[]> batchArgs) { String sql = "delete from t_book where user_id=?"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(ints)); } //批量刪除 List<Object[]> batchArgs = new ArrayList<>(); Object[] o1 = {"3"}; Object[] o2 = {"4"}; batchArgs.add(o1); batchArgs.add(o2); //調(diào)用方法實現(xiàn)批量刪除 bookService.batchDelete(batchArgs);
到此這篇關(guān)于Spring框架中的JdbcTemplate的文章就介紹到這了,更多相關(guān)Spring JdbcTemplate內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Druid連接池未關(guān)閉導(dǎo)致內(nèi)存泄漏問題
這篇文章主要介紹了Druid連接池未關(guān)閉導(dǎo)致內(nèi)存泄漏問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12spring使用xml方式整合Druid數(shù)據(jù)源連接池
傳統(tǒng)的JDBC數(shù)據(jù)庫連接方式,每次連接都需加載Connection到內(nèi)存并驗證,使用后再放回,從而重復(fù)利用數(shù)據(jù)庫連接資源,這不僅降低了系統(tǒng)資源消耗,還避免了頻繁連接導(dǎo)致的服務(wù)器崩潰和內(nèi)存泄漏風(fēng)險,數(shù)據(jù)庫連接池在初始化時創(chuàng)建并保持最小數(shù)量的數(shù)據(jù)庫連接2024-10-10java根據(jù)擴展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例
這篇文章主要介紹了java根據(jù)擴展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例,需要的朋友可以參考下2014-03-03Java調(diào)用DeepSeek實現(xiàn)多輪對話功能
對于廣大Java開發(fā)者而言,DeepSeek這一先進的人工智能技術(shù),猶如一把鑰匙,為我們打開了提升開發(fā)效率與創(chuàng)新能力的新大門,本文給大家介紹了Java調(diào)用DeepSeek實現(xiàn)多輪對話功能,需要的朋友可以參考下2025-03-03解決新版idea新建文件沒有XML和Resource Bundle文件問題
這篇文章主要介紹了解決新版idea新建文件沒有XML和Resource Bundle文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07Java中的logback標(biāo)記日志過濾器MarkerFilter詳解
這篇文章主要介紹了Java中的logback標(biāo)記日志過濾器MarkerFilter詳解,在logback-classic中存在一個全局過濾器TurboFilter,TurboFilter是與LoggerContext綁定,會在會在其它過濾器之前執(zhí)行,需要的朋友可以參考下2023-11-11