網站首頁 編程語言 正文
1.JdbcTemplate基本使用
1.1-JdbcTemplate基本使用-概述(了解)
JdbcTemplate是spring框架中提供的一個對象,是對原始繁瑣的Jdbc API對象的簡單封裝。spring框架為我們提供了很多的操作模板類。例如:操作關系型數據的JdbcTemplate和HibernateTemplate,操作nosql數據庫的RedisTemplate,操作消息隊列的JmsTemplate等等。
1.2-JdbcTemplate基本使用-開發步驟(理解)
①導入spring-jdbc和spring-tx坐標
②創建數據庫表和實體
③創建JdbcTemplate對象
④執行數據庫操作
1.3-JdbcTemplate基本使用-快速入門代碼實現(應用)
導入spring-jdbc和spring-tx坐標
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.20</version>
</dependency>
</dependencies>
創建數據庫表和實體
create table Account(
name varchar(50),
money double )
public class Account {
private String name;
private double money;
//生成getter setter方法
先測試連接能不能用:
創建JdbcTemplate對象
執行數據庫操作
//測試jdbcTemplate能否使用
@Test
public void test(){
//創建數據連接池對象
DruidDataSource druidDataSource=new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3306/db1");
druidDataSource.setUsername("root");
druidDataSource.setPassword("12345");
//創建jdbc模板對象
JdbcTemplate jdbcTemplate=new JdbcTemplate();
//設置數據源對象
jdbcTemplate.setDataSource(druidDataSource);
//執行sql語句
int row=jdbcTemplate.update("insert into account values(?,?)","lisi",5000);
System.out.println(row);
}
1.4-JdbcTemplate基本使用-spring產生模板對象分析(理解)
我們可以將JdbcTemplate的創建權交給Spring,將數據源DataSource的創建權也交給Spring,在Spring容器內部將數據源DataSource注入到JdbcTemplate模版對象中,然后通過Spring容器獲得JdbcTemplate對象來執行操作。
1.5-JdbcTemplate基本使用-spring產生模板對象代碼實現(應用)
配置如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db1"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</bean>
<!--jdbc模板對象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
測試代碼:
@Test
//測試Spring產生jdbcTemplate對象
public void test2() throws PropertyVetoException {
ApplicationContext app = new ClassPathXmlApplicationContext("application.xml");
JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
int row = jdbcTemplate.update("insert into account values(?,?)", "lisi", 5000);
System.out.println(row);
}
1.6-JdbcTemplate基本使用-spring產生模板對象代碼實現(抽取jdbc.properties)(應用)
將數據庫的連接信息抽取到外部配置文件中,和spring的配置文件分離開,有利于后期維護
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db1
jdbc.username=root
jdbc.password=12345
<!--加載jdbc.properties-->
<context:property-placeholder location="classpath:jdbc.properties"/>
?
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--jdbc模板對象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
1.7-JdbcTemplate基本使用-常用操作-更新操作(應用)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTemplateCRUDTest {
?
@Autowired
private JdbcTemplate jdbcTemplate;
?
//修改更新
@Test
public void testUpdate(){
jdbcTemplate.update("update account set money=? where name=?",10000,"tom");
}
//刪除
@Test
public void testDelete(){
jdbcTemplate.update("delete from account where name=?","tom");
}
?
}
1.8-JdbcTemplate基本使用-常用操作-查詢操作(應用)
對應的方法:
方法名 | 參數說明 |
---|---|
queryForObject(String sql, Class type) | sql: 表示sql語句 Class:表示返回值類型 |
queryForObject(String sql,RowMapper rowmapper, Class type) | sql:表示sql語句, RowMappr是一個接口,針對返回不同類型數據,使用這個接口進行封裝 。 calss:表示返回值類型 |
query(sql, rowMapper, class) | sql:表示sql語句, RowMappr是一個接口,針對返回不同類型數據,使用這個接口進行封裝 。 calss:表示返回值類型 |
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTemplateCRUDTest {
?
@Autowired
private JdbcTemplate jdbcTemplate;
?
//聚合查詢
@Test
public void testQueryCount(){
Long count = jdbcTemplate.queryForObject("select count(*) from account", Long.class);
System.out.println(count);
}
//查詢一個
@Test
public void testQueryOne(){
Account account = jdbcTemplate.queryForObject("select * from account where name=?", new BeanPropertyRowMapper<Account>(Account.class), "tom");
System.out.println(account);
}
//查詢所有
@Test
public void testQueryAll(){
List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));
System.out.println(accountList);
}
?
}
1.9 總結 jdbcTemplate基本使用
①導入spring-jdbc和spring-tx坐標
②創建數據庫表和實體
③創建JdbcTemplate對象
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
④執行數據庫操作
更新操作:
jdbcTemplate.update (sql,params)
查詢操作:
jdbcTemplate.query (sql,Mapper,params)
jdbcTemplate.queryForObject(sql,Mapper,params)
2. jdbc整合案例
-
JdbcTemplate是jar包里的類,不是自己創建的。
-
JdbcTemplate中有個屬性叫:dataSource,源碼中已經為其設置了set方法,所以用的是set方法注入屬性
-
JdbcTemplate的屬性dataSource注入的正是上面數據庫連接池對象,等于說把JdbcTemplate對象和數據庫連接起來了
實現數據添加功能:
案例分析:
1.創建dao接口和實現類
2.使用jdbcTmplate對象添加數據
3.構建service接口和實現類
4.測試運行
實現步驟:
1、創建Dao接口和實現類
public interface AccountDao {
public void save(Account account);
}
實現類如下
@Repository
public class AccountDaoImpl implements AccountDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void save(Account account) {
//2、調用jdbcTemplate.update(實現添加 刪除 修改等)
//創建添加的sql語句
String sql="insert into by_account values(?,?,?)";
Object[] acc= {account.getId(),account.getName(),account.getMoney()};
//調用jdbcTemplate.update(實現添加 刪除 修改等)
int update = jdbcTemplate.update(sql, acc);
//返回值添加了幾行
System.out.println(update);
}
}
3、構建service接口和方法
public interface AccountService {
public void save(Account account);
}
實現類
@Service
public class AccountServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
@Override
public void save(Account account) {
bookDao.save(account);
}
}
4、測試運行
@Test
public void testadd(){
ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
BookService bookService = ac.getBean(BookService.class);
Account account=new Account();
account.setId(null);
account.setName("xiaoli");
account.setMoney("50000");
bookService.save(account);
}
2.2 修改name和money的值
實現步驟
1、Dao接口添加update方法
//修改
public void update(Account account);
2、實現類進行數據編寫
@Override
public void update(Account account) {
//根據id修改name和money的值
String sql="update by_account set name=? ,money=? where id=?";
Object[] acc={account.getName(),account.getMoney(),account.getId()};
int update = jdbcTemplate.update(sql, acc);
if(update>0){
System.out.println("修改成功");
}else{
System.out.println("修改失敗");
}
}
3、service接口和實現類編寫
public void update(Account account);
?
@Override
public void update(Account account) {
bookDao.update(account);
}
4、測試類編寫
@Test
public void testUpdate(){
ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
BookService bookService = ac.getBean(BookService.class);
Account account=new Account();
account.setId("3");
account.setName("大壯");
account.setMoney("3000");
bookService.update(account);
}
查詢系列根據id查詢
實現步驟:
-
創建Dao接口方法并實現方法
-
實現查詢邏輯
-
創建service方法和實現類
-
測試
第一步:創建Dao接口方法并實現方法
//查詢
public Account findById(String id);
第二步:實現查詢邏輯
@Override
public Account findById(String id) {
String sql="select * from by_account where id=?";
RowMapper<Account> rowMapper=new BeanPropertyRowMapper<Account>(Account.class);
Account account = jdbcTemplate.queryForObject(sql, rowMapper, id);
// Account account = jdbcTemplate.query(sql, rowMapper, id).get(0);
return account;
}
第三步:創建service方法和實現類
//查詢
public Account findById(String id);
實現類:
@Override
public Account findById(String id) {
Account account = bookDao.findById(id);
return account;
}
第四步:測試
@Test
public void testfindById(){
ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
BookService bookService = ac.getBean(BookService.class);
Account account = bookService.findById("2");
System.out.println(account);
}
查詢所有的數據:
第一步:創建Dao方法
public List<Account> findAll();
第二步:實現邏輯
@Override
public List<Account> findAll() {
String sql="select * from by_account";
RowMapper<Account> rowMapper=new BeanPropertyRowMapper<Account>(Account.class);
List<Account> list = jdbcTemplate.query(sql, rowMapper);
return list;
}
第三步:service接口和實現類
public List<Account> findAll();
?
@Override
public List<Account> findAll() {
List<Account> list = bookDao.findAll();
return list;
}
第四步:構建測試類
@Test
public void testfindAll(){
ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
BookService bookService = ac.getBean(BookService.class);
List<Account> list = bookService.findAll();
for (Account account : list) {
System.out.println(account);
}
}
原文鏈接:https://blog.csdn.net/qq_52963857/article/details/131512660
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2023-02-05 通過示例學習python中os模塊的使用_python
- 2023-06-16 GO語言中Chan實現原理的示例詳解_Golang
- 2022-11-07 React?全面解析excel文件_React
- 2022-07-31 Android?中的類文件和類加載器詳情_Android
- 2023-01-07 SafeList?in?Flutter?and?Dart小技巧_Android
- 2023-03-18 python中統計相同字符的個數方法實例_python
- 2023-07-25 npm login 時報錯npm ERR! code E403
- 2022-09-18 Go語言包管理工具Godep的用法_Golang
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支