Spring框架学习笔记(八) Spring的数据库JdbcTemplate的具体应用

(一) JdbcTemplate 的常用方法      

  1. update   (更新数据   包括 insert  delete   update方法)
  2. batchUpdate (批量更新)
  3. queryForObject (查询单行数据,查询列数据等)
  4. query (批量查询)

(二)  具体应用

       1. 首先在数据库中创建一个表,并在表中加入部分数据方便操作。

        2. 连接数据库,操作在上一篇写过,连接成功后开始进行操作。

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

 
     
     

        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 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 rowMapper, Object... args) 方法!!! 否则不能实现查询!!!

另外需要注意:

  •     其中的 RowMapper 指定如何去映射结果集的行, 常用的实现类为 BeanPropertyRowMapper
  •     使用 SQL 中列的别名完成列名和类的属性名的映射. 例如 last_name lastName
  •     不支持级联属性. JdbcTemplate 到底是一个 JDBC 的小工具, 而不是 ORM 框架
/*
	 * 获取对象
	 * 从数据库中获取一条记录, 实际得到对应的一个对象
	 * 注意不是调用 queryForObject(String sql, Class requiredType, Object... args) 方法!
	 * 而需要调用 queryForObject(String sql, RowMapper rowMapper, Object... args)
	 */
	@Test
	public void testquerry() {
		String sql="select id,name,age from person where id=?";
		RowMapper 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 rowMapper = new BeanPropertyRowMapper<>(Person.class);
		List 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 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);
	}

 

你可能感兴趣的:(JAVA,Spring框架)