Spring JDBC的使用方法详解
1、为什么使用Spring提供的JDBC的封装?
因为Spring提供了完整的模板类以及基类可以简化开发,我们只需写少量的代码即可。
2、实例讲解
第一步:导入依赖mysql-connectorspring-jdbcspring-txspring-corespring-beansspring-context等等
第二步:数据库的建立,配置xml
第三步:获取jdbcTemplate对象
可以这样获得
privateJdbcTemplatejdbcTemplate;
publicvoidsetDataSource(DataSourcedataSource){
this.jdbcTemplate=newJdbcTemplate(dataSource);
}
也可以继承JdbcDaoSupport,使用super.getJdbcTemplate()获得
第四步:使用jdbcTemplate对象进行增删改查
增删改使用update(),这个方法的参数,第一个为sql语句,之后为可变参数,传入sql语句中的占位符
查询使用queryForObject()方法的第一个参数为sql中需要的参数,第三个参数为实现RowMapper接口的对象,
用于处理结果集,该方法要求返回单一的对象
query()该方法返回对象集合
publicclassUserDaoImplextendsJdbcDaoSupportimplementsIUserDao{
publicvoidsave(Useruser){
super.getJdbcTemplate().update("insertintouser(id,username,password,date,salary)values(null,?,?,?,?)",
user.getUsername(),user.getPassword(),user.getDate(),user.getSalary());
}
publicvoidupdate(Useruser){
super.getJdbcTemplate().update("updateusersetusername=?,password=?,date=?,salary=?whereid=?",
user.getUsername(),user.getPassword(),user.getDate(),user.getSalary(),user.getId());
}
publicvoiddelete(Integerid){
super.getJdbcTemplate().update("deletefromuserwhereid=?",id);
}
publicUserfindById(Integerid){
/*Listuser=super.getJdbcTemplate().query("select*fromuserwhereid=?",newObject[]{id},
newRowMapper(){
@Override
publicUsermapRow(ResultSetresultSet,inti)throwsSQLException{
Useruser=newUser();
user.setId(resultSet.getInt("id"));
user.setDate(resultSet.getDate("date"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setSalary(resultSet.getBigDecimal("salary"));
returnuser;
}
//方法的返回值会直接封装到集合中
});
returnuser.size()>0?user.get(0):null;*/
Useruser=super.getJdbcTemplate().queryForObject("select*fromuserwhereid=?",newObject[]{id},
newRowMapper(){
@Override
publicUsermapRow(ResultSetresultSet,inti)throwsSQLException{
Useruser=newUser();
user.setId(resultSet.getInt("id"));
user.setDate(resultSet.getDate("date"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setSalary(resultSet.getBigDecimal("salary"));
returnuser;
}
});
returnuser;
}
publicListfindAll(){
Listusers=super.getJdbcTemplate().query("select*fromuser",
newRowMapper(){
@Override
publicUsermapRow(ResultSetresultSet,inti)throwsSQLException{
Useruser=newUser();
user.setId(resultSet.getInt("id"));
user.setDate(resultSet.getDate("date"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setSalary(resultSet.getBigDecimal("salary"));
returnuser;
}
//方法的返回值会直接封装到集合中
});
returnusers;
}
}
3、JdbcTemplate是JDBC核心包的中心类
知识点查询地址:
https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/data-access.html#jdbc
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。