Spring框架學習筆記(八) Spring的數據庫JdbcTemplate的具體應用

(一) JdbcTemplate 的常用方法      

  1. update   (更新數據   包括 insert  delete   update方法)
  2. batchUpdate (批量更新)
  3. queryForObject (查詢單行數據,查詢列數據等)
  4. query (批量查詢)

(二)  具體應用

       1. 首先在數據庫中創建一個表,並在表中加入部分數據方便操作。

        2. 連接數據庫,操作在上一篇寫過,連接成功後開始進行操作。

        3. 配置文件中配置JdbcTemplate 的信息

 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
     <property name="dataSource" ref="dataSource"></property>
     </bean>

        3. 更新操作(update)

          直接調用 JdbcTemplate 的Update 方法,直接調用 sql 語句 ( delete 和 insert 方法同樣)

/*
	 *  實現數據的  DELETE  update  insert
	 *
	 */
	@Test
	void testjdbctemplate() {
		String sql="update Person set name=? where id=?";
		jdbcTemplate.update(sql, "bbb",4);
	}
	

            4.批量更新

          調用 JdbcTemplate 的 batchupdate 方法 。  

            這裏需要注意的是 List 的應用。通過 add 添加信息

/*
	 * 實現批量的 select  update  insert
	 */
	@Test
	public void testlistjdbctemplate() {
		String sql="insert into person(id,name,age) value (?,?,?)";
		
		List<Object[]> batchArgs=new ArrayList<>();
		batchArgs.add(new Object[]{5,"ccc",20});
		batchArgs.add(new Object[] {6,"ddd",30});
		batchArgs.add(new Object[] {7,"eee",40});
		jdbcTemplate.batchUpdate(sql, batchArgs);
	}

           5. 單條查詢 (獲取數據庫中的對象)

             要保證已經創建了實體類,並有實體類的顯示方法。

            注意調用的是queryForObject方法中的queryForObject(String sql, RowMapper<Employee> rowMapper, Object... args) 方法!!! 否則不能實現查詢!!!

另外需要注意:

  •     其中的 RowMapper 指定如何去映射結果集的行, 常用的實現類爲 BeanPropertyRowMapper
  •     使用 SQL 中列的別名完成列名和類的屬性名的映射. 例如 last_name lastName
  •     不支持級聯屬性. JdbcTemplate 到底是一個 JDBC 的小工具, 而不是 ORM 框架
/*
	 * 獲取對象
	 * 從數據庫中獲取一條記錄, 實際得到對應的一個對象
	 * 注意不是調用 queryForObject(String sql, Class<Employee> requiredType, Object... args) 方法!
	 * 而需要調用 queryForObject(String sql, RowMapper<Employee> rowMapper, Object... args)
	 */
	@Test
	public void testquerry() {
		String sql="select id,name,age from person where id=?";
		RowMapper<Person> rowMapper=new BeanPropertyRowMapper<>(Person.class);
		Person person=jdbcTemplate.queryForObject(sql, rowMapper,1);
		System.out.println(person);
	}
	

           6. 批量查詢

             同查詢的方法差不多,注意List 的應用。

/**
	 * 查到實體類的集合
	 * 注意調用的不是 queryForList 方法
	 */
	@Test
	public void testQueryForList(){
		String sql = "select id,name,age from person where id>?";
		RowMapper<Person> rowMapper = new BeanPropertyRowMapper<>(Person.class);
		List<Person> persons = jdbcTemplate.query(sql, rowMapper,2);
		System.out.println(persons);
	}

   (三) 工程項目中 JdbcTemplate 的應用

            工程項目中,最重要的一點就是系統的封裝性,程序的可視性。因此在主類中只能調用方法,而不應該再寫查詢等操作,這些操作都應被封裝在一個類中,便於修改,也便於主函數應用。

          1.  創建一個封裝類

           類中寫方法,這裏只寫了一個

           另外需要配置類的bean, 註解配置和XML配置都可以應用,不再贅述,前面文章中寫的有。

package jdbc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

@Repository
public class PersonDao {
	
	@Autowired
	private JdbcTemplate jdbcTemplate;
		
	public void getid(int id) {
		String sql="select id,name,age from person where id=?";
		RowMapper<Person> rowMapper=new BeanPropertyRowMapper<>(Person.class);
		Person person=jdbcTemplate.queryForObject(sql, rowMapper,id);
		System.out.println(person);
	}

}

       2. 主類中調用方法

         類中創建對象,對象調用函數直接應用。方便快捷。

ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
//創建對象
private PersonDao personDao;
personDao=ctx.getBean(PersonDao.class);
		
	@Test
	public void testPersonDao() {
		personDao.getid(2);
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章