前言
今天看到了SpringJDBC这儿,感觉目前来说,SpringJDBC工作中使用的不太多了,就在这儿简单记录一下大致的基础知识,本章略简单,文末附上一篇比较饱满的文章,有兴趣的可以看一下。
什么是Spring JDBC
Spring框架简化了程序开发,SpringJDBC就是一部分,它不需要开发人员去考虑获取连接、关闭连接等操作,只需要配置好后,调用相应的方法即可。使得开发人员从繁琐的数据库操作中解脱出来,从而有更多的精力投入到业务逻辑中。
配置Spring JDBC
此处配置了读取数据库连接配置,连接池以及JdbcTemplate
<util:properties id="dbConfig" location="classpath:db.properties"></util:properties>
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="#{dbConfig.driver}"></property>
<property name="url" value="#{dbConfig.url}"></property>
<property name="username" value="#{dbConfig.username}"></property>
<property name="password" value="#{dbConfig.password}"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean>
代码示例
package try01.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import try01.entity.TestUser;
@Repository("sjDao")
public class SpringJdbcDao {
@Resource(name="jdbcTemplate")
private JdbcTemplate jdbcTemplate;
public void doSave(){
String sql = "insert into test(id,name)values(?,?)";
Object[] args = new Object[]{2,"ww"};
jdbcTemplate.update(sql, args);
}
public void doUpdate(){
String sql = "update test set name=? where id=?";
Object[] args = new Object[]{"ls",1};
jdbcTemplate.update(sql,args);
}
public void doDelete(){
String sql = "delete from test where id=?";
int i = jdbcTemplate.update(sql,"1");
System.out.println(i);
}
public TestUser findById(){
String sql = "select * from test where id=?";
Object[] args = new Object[]{1};
List list = (List) jdbcTemplate.query(sql,args, new TestUserRowMapper());
System.out.println(list);
if(list!=null&&list.size()>0){
TestUser tu= (TestUser) list.get(0);
return tu;
}
return null;
}
// 注意:此处我是自己写了一个RowMapper的实现类,也可以直接使用框架写好的RowMapper的实现类BeanPropertyRowMapper,使用它就可以不需要自己去写实现类了
class TestUserRowMapper implements RowMapper<TestUser>{
public TestUser mapRow(ResultSet rs, int rowNum) throws SQLException {
TestUser tu = new TestUser();
tu.setId(rs.getString("id"));
tu.setName(rs.getString("name"));
return tu;
}
}
public List findAll(){
String sql = "select * from test";
List list = (List) jdbcTemplate.query(sql, new TestUserRowMapper());
System.out.println(list);
return list;
}
// 如果返回的是条数等,可以使用jdbcTemplate.query(sql, class);此处的class是指返回参数类型的字节码文件
}
可参考文章
https://blog.youkuaiyun.com/weixin_44117272/article/details/94716724