day22--SSM之Spring jdbc
day22–SSM之Spring jdbc
Spring JDBCTemplate介紹
(1)JdbcTemplate屬於Spring中比較獨立的一個模組
(2)JdbcTemplate是什麼?
Spring對資料庫的操作在jdbc上面做了深層次的封裝
(3)有什麼特點?
》使用spring的注入功能
可以把DataSource註冊到JdbcTemplate之中 (spring-jdbc.jar)
》JdbcTemplate 核心處理物件(有對應的增刪改查的方法)
update(sql, 實際傳遞的引數 ); 可以完成增刪改
(4)與原生JDBC,MyBatis區別?
》與MyBatis都是對原生JDBC的封裝
》簡單的資料庫操作使用JdbcTemplate,大型複雜的使用Mybatis
SpringJDBCTemplate的Spring實現
(1)準備資料庫
(2)依賴配置
(3)給資料來源DriverManagerDataSource設定四大資訊
(4)呼叫update方法
update(sql, 實際傳遞的引數 ); 可以完成增刪改
實現
pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
sql
#建立資料庫
create database springjdbc ;
use springjdbc;
create table `stu` (
`sid` double ,
`sname` varchar (90),
`schoolName` varchar (300),
`score` double
);
insert into `stu` (`sid`, `sname`, `schoolName`, `score`) values('1','趙四','吉大','300');
insert into `stu` (`sid`, `sname`, `schoolName`, `score`) values('17','張三','交大','3000');
insert into `stu` (`sid`, `sname`, `schoolName`, `score`) values('18','熊3','武大','3000');
insert into `stu` (`sid`, `sname`, `schoolName`, `score`) values('19','張飛','交大','3000');
TestJdbcTemplate
public class TestJdbcTemplate {
@Test
public void test01(){
//建立資料來源物件 四大資訊
DriverManagerDataSource dataSource= new DriverManagerDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/springjdbc");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//JdbcTemplate物件 update 增刪改
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);//參 資料來源連線池
//呼叫update
jdbcTemplate.update("insert into stu values(?,?,?,?)",1000,"jack","吉首",100);//參1 sql,參2 佔位符對應的引數
}
}
applicationContext.xml
<!-- DriverManagerDataSource dataSource = new DriverManagerDataSource();-->
<!-- dataSource.setUrl("jdbc:mysql://localhost:3306/springjdbc");-->
<!-- dataSource.setUsername("root");-->
<!-- dataSource.setPassword("123456");-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/springjdbc"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- //JdbcTemplate物件 update 增刪改-->
<!-- JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);//參 資料來源連線池-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>
TestJdbcTemplateSpring
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestJdbcTemplateSpring {
//什麼時候使用註解 ,如果是自己開發的類,使用註解
//如果是別人開發的,因為註解加不上去,使用xml
@Autowired
JdbcTemplate jdbcTemplate;
@Test
public void test01(){
//呼叫update
jdbcTemplate.update("insert into stu values(?,?,?,?)",1000,"rose","吉首",100);//參1 sql,參2 佔位符對應的引數
}
@Test
public void test02(){
//呼叫update
jdbcTemplate.update("delete from stu where sid = ? ",1000);//參1 sql,參2 佔位符對應的引數
}
@Test
public void test03(){
//呼叫update
jdbcTemplate.update("update stu set sname = ? where sid= ?","關於",17);//參1 sql,參2 佔位符對應的引數
}
}
SpringJDBCTemplate-單值查詢和查詢一行
(1)queryForObject
返回的結果可以是一個值也可以是一個物件
如:String Integer
如:Student
(2)如果是一個物件,則需要BeanPropertyRowMapper
》什麼是BeanPropertyRowMapper
將一行表記錄 賦值給 一個javaBean物件返回
但要求列名與表名相同
(3)結果賦值給Map,很少用。
TestJdbcTemplateSpring
//返回結果是一個值或者一個行 queryForObject
@Test
public void test04(){
// Integer count= jdbcTemplate.queryForObject(" select count(*) from stu;",Integer.class);
// System.out.println(count);
// String name =jdbcTemplate.queryForObject("select sname from stu where sid=?;",String.class,17);//參1 sql
// System.out.println(name);
String sql = "select * from stu where sid=?;";
//一行資料轉換成一個物件需要rowmapper
BeanPropertyRowMapper rowMapper = new BeanPropertyRowMapper(Stu.class);
Stu s = (Stu) jdbcTemplate.queryForObject(sql,rowMapper,17);//參1 sql 參2 RowMapper 參3 賦值
System.out.println(s);
// Map<String,Object> map = jdbcTemplate.queryForMap(sql,17);//參1 sql 參3 賦值
// System.out.println(map.get("sid"));
}
TestJdbcTemplateSpring
(1)queryForList
返回結果是一個List
List元素可是javaBean物件也可以是Map<String,Object>
(2)前者比較常用,後者基本不用
//返回結果是多個行 query
@Test
public void test05(){
String sql = "select * from stu where score > 300";
BeanPropertyRowMapper rowmapper = new BeanPropertyRowMapper(Stu.class);
List<Stu> list = jdbcTemplate.query(sql,rowmapper);
System.out.println(list);
/* List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
System.out.println(list);
Map<String,Object> stu1 =list.get(1);
System.out.println(stu1.get("sname"));*/
}
所有查詢方法彙總
查詢的方法,重點2,5 方法
1. queryForObject(sql ,返回資料型別的位元組碼物件, 實際傳遞的引數); 查詢指定的欄位
2. queryForObject(sql, BeanPropertyRowMapper, 實際傳遞的引數) 查詢物件
3. queryForMap(sql , 實際傳遞的引數) 返回的是一個Map , map物件中存放的是物件的資料, 以鍵值對方式儲存
4. queryForList(sql , 實際引數) 返回的是List<Map<String,Object>> 查詢一個List的結果,但是list中有map
5. query(sql,BeanPropertyRowMapper) 查詢一個List<POJO物件>
相關文章
- 【Spring】jdbcSpringJDBC
- Spring JDBC框架SpringJDBC框架
- Spring的JDBC支援SpringJDBC
- Spring 對JDBC的支援SpringJDBC
- Spring Data JDBC介紹SpringJDBC
- Java 之 JDBCJavaJDBC
- Java之JDBCJavaJDBC
- Spring Session JDBC的使用 - javadevjournalSpringSessionJDBCJavadev
- Spring Data JDBC參考文件SpringJDBC
- Spring系列之JDBC對不同資料庫異常如何抽象的?SpringJDBC資料庫抽象
- Java 之 JDBC(二)JavaJDBC
- Spring04——Spring操作JdbcTemplate進行JDBC操作SpringJDBC
- spring-jdbc 的實現原理SpringJDBC
- Spring Data JDBC參考文件 三SpringJDBC
- 關於Spring的JDBC連線mysql(與傳統jdbc比較)SpringJDBCMySql
- jmeter之JDBC類元件JMeterJDBC元件
- 使用Spring Data JDBC實現DDD聚合SpringJDBC
- Spring Boot 學習筆記(2):JDBCSpring Boot筆記JDBC
- Spring+SpringMVC+JDBC實現登入SpringMVCJDBC
- Spring整合Quartz案例使用JDBC儲存方式SpringquartzJDBC
- springboot 接入shardingsphere-jdbc-core-spring-boot-starterSpring BootJDBC
- Hive學習之JDBC訪問HiveJDBC
- Spring Data JDBC: 對映無ID列的表SpringJDBC
- 通過 Spring 框架如何進行JDBC操作呢?Spring框架JDBC
- Spring Data JDBC如何對DDD聚合根進行部分更新? - spring.ioSpringJDBC
- JDBC之連線sqlserver資料庫JDBCSQLServer資料庫
- Sharding-JDBC 原始碼之 SQL 解析JDBC原始碼SQL
- Spring學習筆記3(JDBC模板&事務管理)Spring筆記JDBC
- Spring Security OAuth2-基於JDBC儲存令牌SpringOAuthJDBC
- 【Spring Boot】使用JDBC 獲取相關的資料Spring BootJDBC
- 第四章:Spring專案對JDBC的支援SpringJDBC
- 如何將Spring Session與JDBC結合使用? | Java Development JournalSpringSessionJDBCJavadev
- Spring Series---事務中JDBC是否自動提交解析SpringJDBC
- Java安全之JDBC Attacks學習記錄JavaJDBC
- 使用Spring JDBC新增記錄如何返回自增主鍵值SpringJDBC
- Spring Boot入門(五):使用JDBC訪問MySql資料庫Spring BootJDBCMySql資料庫
- Shading – jdbc 原始碼分析(三) – sql 解析之 SelectJDBC原始碼SQL
- 0基礎之你不知道的JDBCJDBC