spring的JdbcTemplate模板类的常用操作

简介

Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,主要提供以下五类方法:

  1. execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句(即数据定义语言,创建和修改数据表结构、类型、视图、索引等);
  2. update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;一般用于执行DML语句(即数据操纵语言);
  3. query方法及queryForXXX方法:用于执行查询相关语句;一般用于执行DQL语句(即数据查询语言);
  4. call方法:用于执行存储过程、函数相关语句。

实践

  • excute方法:
jdbcTemplate.execute("create table user (uuid Integer, name varchar(50),age Integer)");
  
jdbcTemplate.execute("drop table user");
  
  • update方法:
  (1) jdbcTemplate.update("update user set age = 18 where uuid = 123456");
  
  (2) jdbcTemplate.update("insert into user (name,age) values (?,?)",new Object[]{"sixmonth",18});
  
  (3) jdbcTemplate.update("update user set age = ? where uuid = 123456",99);

  //使用PreparedStatement防止sql注入
  (4)jdbcTemplate.update("insert into user (name,age) values (?,?)",new PreparedStatementSetter() {  
        @Override  
          public void setValues(PreparedStatement pstmt) throws SQLException {  
          pstmt.setObject(1, "sixmonth");  
          pstmt.setObject(2, 18);  
		          
}});
  • batchUpdate方法,批量修改需修改sql的配置连接rewriteBatchedStatements=true:

       1. 固定值

    String sql="insert into user (name,age) values (?,?)";
    List list=new ArrayList();
    list.add(new Object[]{"aa",12});
    list.add(new Object[]{"bb",15});
    jdbcTemplate.batchUpdate(sql, list);

       2. 指定值

    List userList = new ArrayList();
	String sql = "insert into user(name,age) values(?,?)";
	jdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() {
		public void setValues(PreparedStatement ps, int i) throws SQLException {
			ps.setString(1, userList.get(i).getName());
			ps.setString(2, userList.get(i).getAge());
		}
		@Override
		public int getBatchSize() {
			return userList.size();
		}
	});
  •  query方法:

       1. 返回实体类集合:

  String sql = "select name,age from user";
  List userList=jdbcTemplate().query(sql,new BeanPropertyRowMapper(User.class));//无参数
  //List userList=jdbcTemplate().query(sql,new Object[] { args1,args2 },new BeanPropertyRowMapper(User.class));//有参数

        2. 返回自定义集合:

  List userList = new ArrayList();
  String sql = "select name,age from user where age = ?";
  userList = jdbcTemplate.query(sql,new Object[] { args1,args2 }, new RowMapper()
	{
		@Override
		 public Object mapRow(ResultSet rs, int rowNum) throws SQLException 
		{
			String s = "name is "rs.getString("name") + ", age is"+  rs.getInteger("age");
			return s
		}
	});
  •  queryForXXX方法:

        1. queryForObject方法:

    String sql="select * from user";
	User user=jdbcTemplate.queryForObject(sql, new RowMapper(){
		@Override
		public User mapRow(ResultSet rs, int rowNum) throws SQLException {
			User user=new User();
			user.setName(rs.getString("name"));
			user.setAge(rs.getInteger("age"));
			return user;
		}
	});
	//String name = (String) jdbcTemplate.queryForObject( "select name from user where id = ?", new Object[] {4}, java.lang.String.class);

         2. queryForList方法(多行数据):

  String sql = "select name,age from user";
  List> userList = jdbcTemplate.queryForList(sql);//无参
  //List> userList = jdbcTemplate.queryForList(sql,new Object[]{args1,args2});//有参

          3. queryForMap方法(单行数据):

  String sql = "select name,age from user where id = 4";
  Map usermap = jdbcTemplate.queryForMap(sql);//无参

           4.queryForLong/queryForInt方法:

  Long lon = jdbcTemplate.queryForLong("SELECT COUNT(*) FROM user");
  Int in = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM user");

总结 

spring自带的JdbcTemplate极大方便开发者进行数据持久层操作,本篇博客只是列举jdbcTemplate常用的一些方法,有兴趣可以继续深入研究!

 

你可能感兴趣的:(SSH框架,Spring,数据库,spring,jdbcTemplate,query,queryForList)