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

Spring框架中的JdbcTemplate

 更新時間:2025年05月15日 14:36:09   作者:真真最可愛  
這篇文章主要介紹了Spring框架中的JdbcTemplate相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

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)建實體類

!](https://img-blog.csdnimg.cn/98bb8039e524427f906680d09d94663b.png)

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)文章

  • 如何簡單使用mybatis注解

    如何簡單使用mybatis注解

    之前我們介紹了使用JDBC或者java框架mabatis來實現(xiàn)對數(shù)據(jù)庫的操作,現(xiàn)在為了簡化代碼,提高程序的簡潔性,我們探索如何使用注解進行開發(fā),需要的朋友可以參考下
    2021-06-06
  • 基于Java實現(xiàn)Redis多級緩存方案

    基于Java實現(xiàn)Redis多級緩存方案

    這篇文章主要介紹了Redis多級緩存方案分享,傳統(tǒng)緩存方案、多級緩存方案、JVM本地緩存,舉例說明這些方案,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • Druid連接池未關(guān)閉導(dǎo)致內(nèi)存泄漏問題

    Druid連接池未關(guān)閉導(dǎo)致內(nèi)存泄漏問題

    這篇文章主要介紹了Druid連接池未關(guān)閉導(dǎo)致內(nèi)存泄漏問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • spring使用xml方式整合Druid數(shù)據(jù)源連接池

    spring使用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-10
  • Java如何遠(yuǎn)程調(diào)用對方接口

    Java如何遠(yuǎn)程調(diào)用對方接口

    這篇文章主要介紹了Java如何遠(yuǎn)程調(diào)用對方接口問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java根據(jù)擴展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例

    java根據(jù)擴展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例

    這篇文章主要介紹了java根據(jù)擴展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例,需要的朋友可以參考下
    2014-03-03
  • Java調(diào)用DeepSeek實現(xiàn)多輪對話功能

    Java調(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文件問題

    這篇文章主要介紹了解決新版idea新建文件沒有XML和Resource Bundle文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java中的logback標(biāo)記日志過濾器MarkerFilter詳解

    Java中的logback標(biāo)記日志過濾器MarkerFilter詳解

    這篇文章主要介紹了Java中的logback標(biāo)記日志過濾器MarkerFilter詳解,在logback-classic中存在一個全局過濾器TurboFilter,TurboFilter是與LoggerContext綁定,會在會在其它過濾器之前執(zhí)行,需要的朋友可以參考下
    2023-11-11
  • Java原生序列化和反序列化代碼實例

    Java原生序列化和反序列化代碼實例

    這篇文章主要介紹了Java原生序列化和反序列化代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論