標籤:bean 3.x mapper 1.0 ... 返回結果 frame beans xmlns
Spring資料庫查詢模版---JdbcTemplate,該類是spring提供的資料庫查詢類,不如mybatis好用
設定檔:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 引入資料庫的串連 --><context:property-placeholderlocation="classpath:conf/db.properties" /><!-- 配置資料來源 --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"p:username="${jdbc.user}" p:password="${jdbc.pword}"p:url="${jdbc.url}" p:driverClassName="${jdbc.classname}"></bean><!-- spring提供的查詢範本 --><bean class="org.springframework.jdbc.core.JdbcTemplate"p:dataSource-ref="dataSource"></bean></beans>
資料庫資訊單獨寫在一個檔案裡:
#不要寫usernamejdbc.user=test0315jdbc.pword=123456jdbc.url=jdbc:oracle:thin:@localhost:1521:xejdbc.classname=oracle.jdbc.OracleDriver
增刪改操作
update(String sql, Object... obj);
大量新增
batchUpdate(sql, List<Object[]> lists);
查詢
queryForMap(String sql, Object... obj); // 查詢出一個Map集合, 返回結果必須並且只有一個, 否則報錯
queryForObject(String sql, RowMapper rowMapper); // 查詢出一個對象, 返回結果必須並且只有一個, 否則報錯, 這個方法必須添加一個RowMapper參數作為傳回型別的映射
queryForList(String sql, Class<?> type); // 查詢結果只能有一列, 並且只支援Integer和String類型的
queryForRowSqlSet(String sql, Object... obj);
query(String sql, new BeanPropertyRowMapper<T>(T.class)); // 持久化查詢
程式碼範例
package com.hanqi.test;//引入包省略class JunitTest {private JdbcTemplate jdbcTemplate;private ClassPathXmlApplicationContext c;@BeforeEachvoid setUp() throws Exception {c = new ClassPathXmlApplicationContext("conf/spring.xml");jdbcTemplate = c.getBean(JdbcTemplate.class);// 擷取查詢範本}@AfterEachvoid tearDown() throws Exception {c.close();}@Testvoid test() {// System.out.println(jdbcTemplate);int r1 = jdbcTemplate.update("delete from appuser where ids = ?", 82);// 刪除操作int r2 = jdbcTemplate.update("insert into appuser(ids,uname,pword) values(sq_test.nextval,?,?)", "sina","1234");// 添加操作// System.out.println(r);String sql = "insert into appuser(ids,uname,pword) values(sq_test.nextval,?,?)";List<Object[]> list = new ArrayList<>();Object[] obj1 = { "qqq", "123" };Object[] obj2 = { "www", "123" };list.add(obj1);list.add(obj2);int[] a = jdbcTemplate.batchUpdate(sql, list);// 大量新增操作,sql語句會根據資料長度產生多條;System.out.println(Arrays.toString(a));// 大量新增顯示為[-2,-2],說明添加成功;String sql2 = "select * from appuser where ids = ?";Map<String, Object> map = jdbcTemplate.queryForMap(sql2, 61);System.out.println(map);// 查詢結果為map集合,鍵為列名String sql3 = "select uname from appuser where ids = 65";String b = jdbcTemplate.queryForObject(sql2, String.class);// 查什麼類型寫什麼類型System.out.println(b);}}
JAVA 架構-Spring-jdbc