最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring框架中的JdbcTemplate

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

JdbcTemplate

1、什么是 JdbcTemplate

(1)Spring 框架對(duì) JDBC 進(jìn)行封裝,使用 JdbcTemplate 方便實(shí)現(xiàn)對(duì)數(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 對(duì)象,注入 DataSource

<!-- JdbcTemplate 對(duì)象 -->
<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 對(duì)象

配置文件

<!-- 組件掃描 -->
<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、對(duì)應(yīng)數(shù)據(jù)庫創(chuàng)建實(shí)體類

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

2、編寫 service 和 dao

(1)在 dao 進(jìn)行數(shù)據(jù)庫添加操作
(2)調(diào)用 JdbcTemplate 對(duì)象里面 update 方法實(shí)現(xiàn)添加操作

  • 第一個(gè)參數(shù):sql 語句
  • 第二個(gè)參數(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)用方法實(shí)現(xiàn)
    Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};
    int update = jdbcTemplate.update(sql,args); //返回值是變化的行數(shù) 
    System.out.println(update);
    }
}

3、測(cè)試類

@Test
public void testJdbcTemplate() {
    ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
    //要調(diào)用Service類中的對(duì)象
    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ù)庫(查詢返回某個(gè)值)

1、查詢表里面有多少條記錄,返回是某個(gè)值

2、使用 JdbcTemplate 實(shí)現(xiàn)查詢返回某個(gè)值代碼

  • 第一個(gè)參數(shù):sql 語句
  • 第二個(gè)參數(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ù)庫(查詢返回對(duì)象)

1、場(chǎng)景:查詢圖書詳情

2、JdbcTemplate 實(shí)現(xiàn)查詢返回對(duì)象

  • 第一個(gè)參數(shù):sql 語句
  • 第二個(gè)參數(shù):RowMapper 是接口,針對(duì)返回不同類型數(shù)據(jù),使用這個(gè)接口里面實(shí)現(xiàn)類完成數(shù)據(jù)封裝
  • 第三個(gè)參數(shù):sql 語句值
//查詢返回對(duì)象
@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、場(chǎng)景:查詢圖書列表分頁…
2、調(diào)用 JdbcTemplate 方法實(shí)現(xiàn)查詢返回集合

  • 第一個(gè)參數(shù):sql 語句
  • 第二個(gè)參數(shù):RowMapper 是接口,針對(duì)返回不同類型數(shù)據(jù),使用這個(gè)接口里面實(shí)現(xiàn)類完成數(shù)據(jù)封裝
  • 第三個(gè)參數(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 實(shí)現(xiàn)批量添加操作

  • 第一個(gè)參數(shù):sql 語句
  • 第二個(gè)參數(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));
   }
   //批量添加測(cè)試
   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 實(shí)現(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)用方法實(shí)現(xiàn)批量修改
   bookService.batchUpdate(batchArgs);

4、JdbcTemplate 實(shí)現(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)用方法實(shí)現(xiàn)批量刪除
   bookService.batchDelete(batchArgs);

到此這篇關(guān)于Spring框架中的JdbcTemplate的文章就介紹到這了,更多相關(guān)Spring JdbcTemplate內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot配置MySQL5.7與MySQL8.0的異同點(diǎn)詳解

    SpringBoot配置MySQL5.7與MySQL8.0的異同點(diǎn)詳解

    MySQL 是 Java 開發(fā)中最常用的數(shù)據(jù)庫之一,而 Spring Boot 提供了便捷的配置方式,隨著 MySQL 8.0 的普及,許多開發(fā)者需要從 MySQL 5.7 升級(jí)到 8.0,在實(shí)際開發(fā)中,二者的配置方式既有相似之處,也有一些需要特別注意的不同點(diǎn),所以本文給大家詳細(xì)介紹了它們的異同點(diǎn)
    2024-12-12
  • Java自定義長度可變數(shù)組的操作

    Java自定義長度可變數(shù)組的操作

    這篇文章主要介紹了Java自定義長度可變數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Spring系列中的beanFactory與ApplicationContext

    Spring系列中的beanFactory與ApplicationContext

    這篇文章主要介紹了Spring系列中的beanFactory與ApplicationContext,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java?MultipartFile文件上傳重命名詳細(xì)代碼示例

    java?MultipartFile文件上傳重命名詳細(xì)代碼示例

    在文件上傳功能開發(fā)中,為防止文件重名導(dǎo)致數(shù)據(jù)覆蓋,常見的做法是在文件名前加上UUID或時(shí)間戳來區(qū)分,這篇文章主要介紹了java?MultipartFile?multipartFile文件上傳重命名的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • MyBatis中不建議使用where?1=1原因詳解

    MyBatis中不建議使用where?1=1原因詳解

    這篇文章主要為大家介紹了MyBatis中不建議使用where?1=1的原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • SpringBoot整合Netty+Websocket實(shí)現(xiàn)消息推送的示例代碼

    SpringBoot整合Netty+Websocket實(shí)現(xiàn)消息推送的示例代碼

    WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù),本文主要介紹了SpringBoot整合Netty+Websocket實(shí)現(xiàn)消息推送的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • java異步編程的7種實(shí)現(xiàn)方式小結(jié)

    java異步編程的7種實(shí)現(xiàn)方式小結(jié)

    異步處理的實(shí)現(xiàn)方式有很多種,常見多線程,消息中間件,發(fā)布訂閱的廣播模式,本文就詳細(xì)的介紹java異步編程的7種實(shí)現(xiàn)方式,感興趣的可以了解一下
    2023-03-03
  • 解讀Spring?Bean的作用域

    解讀Spring?Bean的作用域

    這篇文章主要介紹了解讀Spring?Bean的作用域,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Spring實(shí)戰(zhàn)之Bean的后處理器操作示例

    Spring實(shí)戰(zhàn)之Bean的后處理器操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之Bean的后處理器操作,結(jié)合實(shí)例形式詳細(xì)分析了Bean的后處理器相關(guān)配置、操作方法及使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • idea無法識(shí)別注解,或pom文件異常的問題及解決

    idea無法識(shí)別注解,或pom文件異常的問題及解決

    文章介紹了三種解決IDEA無法識(shí)別注解或POM文件異常的方法:1.檢查省電模式設(shè)置;2.為未識(shí)別的POM文件添加Maven工程;3.移除并重新添加有問題的模塊
    2026-01-01

最新評(píng)論

连江县| 谢通门县| 湘阴县| 开封市| 锡林郭勒盟| 广州市| 泗阳县| 泌阳县| 孝感市| 确山县| 谷城县| 辉县市| 南部县| 天等县| 镇平县| 绥宁县| 宣城市| 石台县| 秀山| 防城港市| 涟源市| 孝义市| 柳州市| 台北市| 张家界市| 太仓市| 斗六市| 正阳县| 额尔古纳市| 顺义区| 名山县| 建阳市| 大理市| 靖州| 永春县| 南陵县| 安乡县| 博白县| 和田市| 高雄市| 博野县|