项目增加jdbc支持,访问,并操作数据
以后再写,先写一篇bug博客.
在项目中,增加jdbc的支持。
数据源,用的是 阿里 数据源。配置如下:
至于,有关数据源选择,请参考我转载的其他几篇文章:
http://blog.csdn.net/u012246342/article/details/52231451
http://blog.csdn.net/u012246342/article/details/52231277
<!-- 配置数据源 --> <!-- 阿里巴巴数据源,不用配置数据库驱动类,会根据请求的url找到相应的驱动类 --> <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_username}" /> <property name="password" value="${jdbc_password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="0" /> <!-- 连接池最大使用连接数量 --> <property name="maxActive" value="20" /> <!-- 连接池最大空闲 --> <property name="maxIdle" value="20" /> <!-- 连接池最小空闲 --> <property name="minIdle" value="0" /> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="60000" /> <!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> --> <property name="validationQuery" value="${validationQuery}" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <property name="testWhileIdle" value="true" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="25200000" /> <!-- 打开removeAbandoned功能 --> <property name="removeAbandoned" value="true" /> <!-- 1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="1800" /> <!-- 关闭abanded连接时输出错误日志 --> <property name="logAbandoned" value="true" /> <!-- 监控数据库 --> <!-- <property name="filters" value="stat" /> --> <property name="filters" value="mergeStat" /> </bean>
properties的配置就不写了,基本就那些东西。
下面是JDBC的配置。很简单<!-- 登录连接数据库 --> <bean id="JDBCdataSourceTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean>
使用jdbc 的代码如下:
@Resource(name = "JDBCdataSourceTemplate") private JdbcTemplate masterTemplate; protected JdbcTemplate getMasterTemplate() { return masterTemplate; }
public SystemUser selectUserByEmail(String email) { String sql = "select * from system_user where sys_user_email = ?"; Object[] args = {email}; // List<SystemUser> user = getMasterTemplate().query(sql,args, ROW_MAPPER); // // if(user == null||user.size() == 0){ // return null; // }else{ // return user.get(0); // } SystemUser user = getMasterTemplate().query(sql, args, RESULT_SET); return user; } private final ResultSetExtractor<SystemUser> RESULT_SET = new ResultSetExtractor<SystemUser>() { @Override public SystemUser extractData(ResultSet rs) throws SQLException,DataAccessException { if(rs.next()){//rs.next() String id = rs.getString("sys_user_id"); String name = rs.getString("sys_user_name"); String password = rs.getString("sys_user_password"); String email = rs.getString("sys_user_email"); String status = rs.getString("sys_user_status"); String type = rs.getString("sys_user_type"); Date createDate = rs.getDate("sys_user_createdate"); return new SystemUser( id, name, password, email,status,type,createDate); }else{ return null; } } }; @SuppressWarnings("unused") private final RowMapper<SystemUser> ROW_MAPPER = new RowMapper<SystemUser>() { @Override public SystemUser mapRow(ResultSet rs, int rowNum) throws SQLException { String id = rs.getString("sys_user_id"); String name = rs.getString("sys_user_name"); String password = rs.getString("sys_user_password"); String email = rs.getString("sys_user_email"); String status = rs.getString("sys_user_status"); String type = rs.getString("sys_user_type"); Date createDate = rs.getDate("sys_user_createdate"); return new SystemUser( id, name, password, email,status,type,createDate); } };
至于 query()方法,可以看API,里面有太多太多了。