package com.ghgj.Druid;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
public class JDBCTemplate {
public static void main(String[] args) {
//增删该只需要用到update()这个方法就行,不需要是放,也不需要连接,连接在数据库连接池已经帮我们做好啦
JdbcTemplate template=new JdbcTemplate(DruidUtiles.getdataSource());
/template.update(“insert into t_testuser values(null,?,?)”,“小二”,“xiaoyi”);/
//查询
/*
* template.query查询到的是一个list集合,但是我们要把它存到User对象里面去
* 用到new BeanPropertyRowMapper<User>来做到关系映射
* 这里需要创建一个User类来装,把list集合存放到User对象里面去,方便在本类中使用到数据时,就可以直接从user对象中拿
* 把一条条记录映射到一个个对象去
* 这时list集合里面存放的就是一个个对象
*/
/*List<User> query = template.query("select * from t_testuser",new BeanPropertyRowMapper<User>(User.class));
System.out.println(query);*/
/*
* queryForList()方法使用
* list里面装的是一个个Map集合
*/
/* List<Map<String,Object>> list = template.queryForList("select * from t_testuser");
for (Map<String, Object> map : list) {
Set<Entry<String,Object>> entry= map.entrySet();
for (Entry<String, Object> entry2 : entry) {
System.out.println(entry2.getKey()+"===="+entry2.getValue());
}
}*/
//只能查询一个键值对,单条数据
Map<String, Object> map = template.queryForMap("select * from t_testuser where id=?",4);
System.out.println(map.get("id"));
System.out.println(map.get("t_username"));
System.out.println(map.get("t_password"));
}
}
//注意,JdbcTemplate template=new JdbcTemplate(DruidUtiles.getdataSource());这里面需要一个数据库连接池,他来帮我们实现自动连接功能.所以需要创建一个JDBCUtils工具类。
package com.ghgj.Druid;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
public class DruidUtiles {
/*
* 抽取Druid的工具类
*/
private static DataSource dataSource;
static{
Properties properties=new Properties();
try {
properties.load(DruidUtiles.class.getClassLoader().getResourceAsStream(“druid.properties”));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getdataSource(){
return dataSource;//对外提供一个数据库连接池
}
}
SpringJDBC思想是:类中的字段名必须和数据库中的表的列名是相同的,因为用到new BeanPropertyRowMapper来做到关系映射。Spring只会通过列明来找set方法,例如表的列名是:password,那么就要通过getPassword来找到对应关系,而且Spring是通过空参构造来拿到对象的,通过反射拿到类的对象,所以必须提供空参构造。