當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring-学习笔记09【JdbcTemplate的基本使用】
生活随笔
收集整理的這篇文章主要介紹了
Spring-学习笔记09【JdbcTemplate的基本使用】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- Java后端 學習路線 筆記匯總表【黑馬程序員】
目錄
01 今日課程內容介紹
02 JdbcTemplate的概述和入門
02.1、pom.xml
02.2、準備實體類Account.java
02.3、測試JdbcTemplateDemo1.java
03 JdbcTemplate在spring的ioc中使用
04 JdbcTemplate的CRUD操作
04.1、JdbcTemplateDemo3.java
05 JdbcTemplate在Dao中的使用
05.1、接口IAccountDao.java
05.2、AccountDaoImpl.java
05.3、bean.xml
05.4、測試類JdbcTemplateDemo4.java
06 JdbcDaoSupport的使用以及Dao的兩種編寫方式
06.1、JdbcDaoSupport.java
01 今日課程內容介紹
1、spring中的JdbcTemplate
?? ?JdbcTemplate的作用:它就是用于和數據庫交互的,實現對表的CRUD操作。
?? ?如何創建該對象
?? ?對象中的常用方法
2、作業:spring基于AOP的事務控制
3、spring中的事務控制
?? ?基于XML的
?? ?基于注解的
02 JdbcTemplate的概述和入門
持久層總圖02.1、pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.itheima</groupId><artifactId>day04_eesy_01jdbctemplate</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency></dependencies></project>02.2、準備實體類Account.java
02.3、測試JdbcTemplateDemo1.java
package com.itheima.jdbctemplate;import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource;/*** JdbcTemplate的最基本用法*/ public class JdbcTemplateDemo1 {public static void main(String[] args) {//準備數據源:spring的內置數據源DriverManagerDataSource ds = new DriverManagerDataSource();ds.setDriverClassName("com.mysql.jdbc.Driver");ds.setUrl("jdbc:mysql://localhost:3306/eesy");ds.setUsername("root");ds.setPassword("root");//1.創建JdbcTemplate對象JdbcTemplate jt = new JdbcTemplate();//給jt設置數據源jt.setDataSource(ds);//2.執行操作jt.execute("insert into account(name,money)values('ccc',1000)");} }03 JdbcTemplate在spring的ioc中使用
04 JdbcTemplate的CRUD操作
查詢所需的方法04.1、JdbcTemplateDemo3.java
package com.itheima.jdbctemplate;import com.itheima.domain.Account; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper;import java.sql.ResultSet; import java.sql.SQLException;/*** JdbcTemplate的CRUD操作*/ public class JdbcTemplateDemo3 {public static void main(String[] args) {//1.獲取容器ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//2.獲取對象JdbcTemplate jt = ac.getBean("jdbcTemplate", JdbcTemplate.class);//3.執行操作//保存//jt.update("insert into account(name,money)values(?,?)","eee",3333f);//更新//jt.update("update account set name=?,money=? where id=?","test",4567,7);//刪除//jt.update("delete from account where id=?",8);//查詢所有 // List<Account> accounts = jt.query("select * from account where money > ?",new AccountRowMapper(),1000f); // List<Account> accounts = jt.query("select * from account where money > ?",new BeanPropertyRowMapper<Account>(Account.class),1000f); // for(Account account : accounts){ // System.out.println(account); // }//查詢一個 // List<Account> accounts = jt.query("select * from account where id = ?",new BeanPropertyRowMapper<Account>(Account.class),1); // System.out.println(accounts.isEmpty()?"沒有內容":accounts.get(0));//查詢返回一行一列(使用聚合函數,但不加group by子句)Long count = jt.queryForObject("select count(*) from account where money > ?", Long.class, 1000f);System.out.println(count);} }/*** 定義Account的封裝策略*/ class AccountRowMapper implements RowMapper<Account> {/*** 把結果集中的數據封裝到Account中,然后由spring把每個Account加到集合中** @param rs* @param rowNum* @return* @throws SQLException*/@Overridepublic Account mapRow(ResultSet rs, int rowNum) throws SQLException {Account account = new Account();account.setId(rs.getInt("id"));account.setName(rs.getString("name"));account.setMoney(rs.getFloat("money"));return account;} }05 JdbcTemplate在Dao中的使用
05.1、接口IAccountDao.java
package com.itheima.dao;import com.itheima.domain.Account;/*** 賬戶的持久層接口*/ public interface IAccountDao {/*** 根據Id查詢賬戶** @param accountId* @return*/Account findAccountById(Integer accountId);/*** 根據名稱查詢賬戶** @param accountName* @return*/Account findAccountByName(String accountName);/*** 更新賬戶** @param account*/void updateAccount(Account account); }05.2、AccountDaoImpl.java
package com.itheima.dao.impl;import com.itheima.dao.IAccountDao; import com.itheima.domain.Account; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.support.JdbcDaoSupport;import java.util.List;/*** 賬戶的持久層實現類*/ public class AccountDaoImpl extends JdbcDaoSupport implements IAccountDao {@Overridepublic Account findAccountById(Integer accountId) {List<Account> accounts = super.getJdbcTemplate().query("select * from account where id = ?", new BeanPropertyRowMapper<Account>(Account.class), accountId);return accounts.isEmpty() ? null : accounts.get(0);}@Overridepublic Account findAccountByName(String accountName) {List<Account> accounts = super.getJdbcTemplate().query("select * from account where name = ?", new BeanPropertyRowMapper<Account>(Account.class), accountName);if (accounts.isEmpty()) {return null;}if (accounts.size() > 1) {throw new RuntimeException("結果集不唯一。");}return accounts.get(0);}@Overridepublic void updateAccount(Account account) {super.getJdbcTemplate().update("update account set name=?,money=? where id=?", account.getName(), account.getMoney(), account.getId());} }05.3、bean.xml
05.4、測試類JdbcTemplateDemo4.java
package com.itheima.jdbctemplate;import com.itheima.dao.IAccountDao; import com.itheima.domain.Account; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;/*** JdbcTemplate的最基本用法*/ public class JdbcTemplateDemo4 {public static void main(String[] args) {//1.獲取容器ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//2.獲取對象IAccountDao accountDao = ac.getBean("accountDao", IAccountDao.class);Account account = accountDao.findAccountById(1);System.out.println(account);account.setMoney(30000f);accountDao.updateAccount(account);} }06 JdbcDaoSupport的使用以及Dao的兩種編寫方式
06.1、JdbcDaoSupport.java
package com.itheima.dao.impl;import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;/*** 此類用于抽取dao中的重復代碼*/ public class JdbcDaoSupport {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}public void setDataSource(DataSource dataSource) {if (jdbcTemplate == null) {jdbcTemplate = createJdbcTemplate(dataSource);}}private JdbcTemplate createJdbcTemplate(DataSource dataSource) {return new JdbcTemplate(dataSource);} }總結
以上是生活随笔為你收集整理的Spring-学习笔记09【JdbcTemplate的基本使用】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring-学习笔记08【面向切面编程
- 下一篇: Java-IntelliJ IDEA【@