JdbcTemplate
Spring為傳統(tǒng)的jdbc API進(jìn)行封裝,簡(jiǎn)化持久層操作,雖然jdbcTemplate很靈活,但和ORM框架相比jdbcTemplate功能就顯得力不從心了,學(xué)習(xí)jdbcTemplate是為學(xué)習(xí)ORM框架做鋪墊
ORM:對(duì)象關(guān)系映射 O:對(duì)象 R:關(guān)系 M:映射
傳入Jdbc API與Spring jdbcTemplate比較
//JDBC API
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery("select count(*) from COUNT student")
if(resultSet.next()){
Integer count = resultSet.getInt("COUNT");
}
//JDBC Template
Integer count = jdbcTemplate.queryForObject("select count(*) from student",Integer.class);
使用Spring-jdbcTemplate準(zhǔn)備
- 引入jar包(Spring基礎(chǔ)jar包、aop、jdbc、tx、MySql驅(qū)動(dòng))
- 配置dataSource源
<!--引入本地?cái)?shù)據(jù)庫(kù)配置-->
<context:property-placeholder location="classpath:jdbc.properties" />
<!--配置數(shù)據(jù)源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///selection_course?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
- 配置JdbcTemplate
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
JdbcTemplate基本使用
- execute方法
- update與batchUpdate方法
- query與queryXXX方法
- call方法
execute對(duì)數(shù)據(jù)庫(kù)DDR操作
update操作單個(gè)增刪改
//API
int update(String sql,Object[] args)
int update(String sql,Objcet... args)
batchUpdate批量增刪改
//API
int[] batchUpdate(String[] sql)
int[] batchUpdate(String sql,List<Object[]>)
單個(gè)簡(jiǎn)單查詢
T queryForObjcet(String sql,Class<T> type)
T queryForObjcet(String sql,Object[] args,Class<T> type)
T queryForObjcet(String sql,Class<T> type,Object... arg)
獲取多個(gè)
//API
List<T> queryForList(String sql,Class<T> type)
List<T> queryForList(String sql,Object[] args,Class<T> type)
List<T> queryForList(String sql,Class<T> type,Object... arg)
查詢復(fù)雜對(duì)象(封裝為Map)
獲取單個(gè)
Map queryForMap(String sql)
Map queryForMap(String sql,Objcet[] args)
Map queryForMap(String sql,Object... arg)
獲取多個(gè)
List<Map<String,Object>> queryForList(String sql)
List<Map<String,Object>> queryForList(String sql,Obgject[] args)
List<Map<String,Object>> queryForList(String sql,Obgject... arg)
查詢復(fù)雜對(duì)象(封裝為實(shí)體對(duì)象)
Spring jdbcTemplate是通過(guò)實(shí)現(xiàn)
org.springframework.jdbc.core.RowMapper這個(gè)接口來(lái)完成對(duì)entity對(duì)象映射
獲取一個(gè)
T queryForObject(String sql,RowMapper<T> mapper)
T queryForObject(String sql,object[] args,RowMapper<T> mapper)
T queryForObject(String sql,RowMapper<T> mapper,Object... arg)
獲取多個(gè)
List<T> query(String sql,RowMapper<T> mapper)
List<T> query(String sql,Object[] args,RowMapper<T> mapper)
List<T> query(String sql,RowMapper<T> mapper,Object... arg)