JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSourec()); //需要传递一个数据源给他,这个东西是线程安全的。。。所以可以用static来搞
String sql = "select id,name,money,birthday from user where name = ?";
Object[] args = new Object[]{name};
Object user = jdbc.queryForObject(sql,args, new RowMapper(){
public Object mapRow(ResultSet rs ,int rowNum)throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setMoney(rs.getFloat("money"));
user.setBirthday(rs.getDate("birthday"));
return user;
}
});
return user;
//上面的代码还是太繁琐了。。。spring 一定能通过反射把我们需要的东西给装起来
Object user = jdbc.queryForObject(sql ,args,new BeanPropertyRowMapper(User.class)); //这个东西牛就牛在他可以对数据库得命名规范进行转化,也就是说你的sql里面的查询字段不需要和bean的属性完全一致。。。如果数据库里面没有这条查询记录或者查询记录不止一个,那么这个屁玩意会报错的
注意:如果字段对不上的话,我们要使用别名哦。。。
如果我的sql里面有的属性,那么你的java类里面必须有,要不然会报错的,换句话说就是容器要足够大
List users = jdbc.query(sql,args,new BeanPropertyRowMapper(User.class)); //直接调用query是返回list,爽
return users;
//下面我们使用一个和这个差不多的。。。不过是泛型
SimpleJdbcTemplate simple = new SimpleJdbcTemplate(JdbcUtils.getDataSource());
String sql = "delete from user where id = ?";
simple.update(sql,user.getId());
String sql = "select id,name,money,birthday from user where name=? and money = ?";
User user = simple.queryForObject(sql,ParameterizedBeanPropertyRowMapper.newInstance(User.class),name,100f);
return user;
SimpleJdbcTemplate 里面包了一个NamedParameterJdbcTemplelate,而
NamedParameterJdbcTemplelate里面又有一个 JdbcTemplelate
所以我们可以这样:
simple.getNamedParameterJdbcOperations(); //得到NamedParameterJdbcTemplelate
simple.getJdbcOperations();//得到JdbcTemplelate
这个里面没有String这种类型。。怎么办
String sql = "select name from user where id = 3";
Object name = jdbc.queryForObject(sql,String.class);
return (String)name;
//如果你认为这还不够灵活,那么下面的方法,spring将Connection创建后的所有事情都交给你去做了
jdbc.execute(new ConnectionCallback(){
public Object doInConnection(Connection con)throws Exception{
String sql = ""
PreparedStatement ps = con......
ps.executeUpdate();
....
ResultSet rs = ps.getGeneratedKeys();
if(rs.next())user.setId(rs.getInt(1));
return null;
}
}); //比如这里可以拿到你的主键。。
jdbc.execute(String sql) ;这个是没有饭后值的,一般用来执行创建表删除表之类的操作
jdbc.execute(String ,PreparedStatementCallback);
下面介绍NamedParameterJdbcTemplate
他是对JdbcTemplate的封装哈
String sql = "select id ,name,money,birthday from user where name =:n and money>:m and id<:id";
Map params = new HashMap();
params.put("n",user.getName());
params.put("m",user.getMoney());
params.put("id",user.getId());
Object u = named.queryForObject(sql,params,new BeanPropertyRowMapper(User.class));
return (User)u;
如果属性名和命名是一样的 ,如 money>:money,那么我们还可以简化
SqlParameterSource 注意:sql 语句的参数的来源这里有两种,可以是map,也可以是Bean
String sql = "select id,name,money,birthday from user where money>:money and id<:id";
SqlParameterSource ps = new BeanPropertySqlParameterSource(user);
Object u = named.queryForObject(sql,ps,new BeanPropertyRowMapper(User.class));
return (User)u; //这样会把user中的值自动设置到preparedStatement中去,而且返回值也会自动设置到User里面去。。。
他的价值在于直接把一个JavaBean变成了参数
//这次我们要把值保存后,把key拿出来
String sql = "insert into user(name,birthday,money) values(:name,:birthday,:money)";
SqlParameterSource ps = new BeanPropertedKeyHolder();
KeyHolder keyHolder = new GeneratedKeyHolder();
named.update(sql,ps,keyHolder);
int id = keyHolder.getKey().intValue();
user.setId(id);
如果是联合主键,那么 Map map = keyHolder.getKeys();
分享到:
相关推荐
赠送jar包:spring-jdbc-5.3.15.jar; 赠送原API文档:spring-jdbc-5.3.15-javadoc.jar; 赠送源代码:spring-jdbc-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.3.15.pom; 包含翻译后的API文档:...
开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6....
spring-jdbc-4.0.0.RELEASE-sources.jar
赠送jar包:spring-jdbc-5.3.10.jar; 赠送原API文档:spring-jdbc-5.3.10-javadoc.jar; 赠送源代码:spring-jdbc-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.3.10.pom; 包含翻译后的API文档:...
spring-jdbc-3.2.5.RELEASE.jar spring-jdbc-3.2.5.RELEASE.jar
JAVAWEB前端课程所需要的五个jar包 - commons-logging-1.2.jar,spring-beans-5.0.0.RELEASE.jar,spring-core-5.0.0.RELEASE.jar,spring-jdbc-5.0.0.RELEASE.jar,spring-tx-5.0.2.RELEASE.jar
赠送jar包:spring-jdbc-5.2.7.RELEASE.jar; 赠送原API文档:spring-jdbc-5.2.7.RELEASE-javadoc.jar; 赠送源代码:spring-jdbc-5.2.7.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.2.7.RELEASE....
赠送jar包:spring-jdbc-5.2.0.RELEASE.jar; 赠送原API文档:spring-jdbc-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-jdbc-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.2.0.RELEASE....
java web 开发中需要用到的外部spring jar spring-jdbc-5.2.3.RELEASE.jar
赠送jar包:spring-jdbc-5.0.10.RELEASE.jar; 赠送原API文档:spring-jdbc-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-jdbc-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.0.10....
spring-jdbc-4.3.6.RELEASE.jar
spring-jdbc-5.2.6.RELEASE.jar
赠送jar包:spring-jdbc-4.3.20.RELEASE.jar 赠送原API文档:spring-jdbc-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-jdbc-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-jdbc-4.3.20.RELEASE-...
spring-jdbc-5.1.5.RELEASE.jar
赠送jar包:spring-jdbc-5.3.7.jar; 赠送原API文档:spring-jdbc-5.3.7-javadoc.jar; 赠送源代码:spring-jdbc-5.3.7-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.3.7.pom; 包含翻译后的API文档:spring...
spring-jdbc-4.0.0.RELEASE-javadoc.jar
赠送jar包:spring-jdbc-5.3.7.jar; 赠送原API文档:spring-jdbc-5.3.7-javadoc.jar; 赠送源代码:spring-jdbc-5.3.7-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.3.7.pom; 包含翻译后的API文档:spring...
spring-jdbc连接jar包,spring对于jdbc技术的封装,spring容器组成部分
赠送jar包:spring-jdbc-5.3.15.jar 赠送原API文档:spring-jdbc-5.3.15-javadoc.jar 赠送源代码:spring-jdbc-5.3.15-sources.jar 包含翻译后的API文档:spring-jdbc-5.3.15-javadoc-API文档-中文(简体)-英语-...
赠送jar包:spring-jdbc-5.0.8.RELEASE.jar; 赠送原API文档:spring-jdbc-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-jdbc-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-jdbc-5.0.8.RELEASE....