使用spring整合数据源

Spring+JDBC: queryForXXX()|query()

Users u = template.queryForObject(sql,new BeanPropertyRowMapper(Users.class));
List users = template.query(sql,new BeanPropertyRowMapper(Users.class));

String sql = “select name from users”;
String name = template.queryForList(sql, String.class);

String sql = “select * from users”;
List> list = template.queryForList(sql);

//调用存储过程 mydb->demo lambda
this.template.execute("{call demo(?,?)}", new CallableStatementCallback() {
@Override
public Object doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {

return out;
}
});

其他数据源配置:
使用dbcp连接池:导commons-dbcp-x.x.jar和commons-pool-x.x.jar

拿到连接3秒不用自动被容器回收 (Tomcat8.5+)

C3P0连接池:









阿里巴巴数据源:

来至于JNDI Java Naming and Directory Interface (使用tomcat作为实例)

//代表命名服务目录名称为jdbc/mysql(实际为:java:comp/env/jdbc/mysql)

//加上这个的意思是不用使用java:comp/env/来设置jndiName

或者使用:(导入jee命名空间)

理解template method模式
(其实就是与代理模式相反,将可变的业务拿出来,其他不变的模块组合成一个模板)
例如:

//重写了匿名类来实现功能
Integer execute = template.execute("{call demo(?,?)}", (CallableStatement
cs)-> {
cs.setObject(1, 50); cs.setObject(2, Types.INTEGER); return cs.getInt(2);
});

使用spring整合数据源_第1张图片

你可能感兴趣的:(spring)