小码农的代码(一)----------SpringJDBC的使用 javaspring
程序员文章站
2022-07-03 09:45:40
...
今年年初遇到一个对接ERP与WMS的项目,只做后端数据同步,不进行页面展示,简而言之就是我们接收ERP http请求传送过来的数据然后转存到自己的数据库并将数据同步到WMS系统的数据库中,(ps:我也比较奇怪为什么不直接用http请求进行对接,而来中间再转存一次)。由于项目较小又不需要前端展示就直接只用SpringJDBC进行数据库操作,项目涉及的内容包括http请求接口的开发、多数据库操作,本文先拉出来整理下SpringJDBC的直接使用。
SpringJDBC的使用目前来看非常简单,主要就是三个步骤。
一、maven加载所需要的jar包;
一、Spring配置文件进行数据源与jdbctemple的配置;
二、直接在数据访问层使用。
以下是spring配置文件的内容:
这里的注意点在于spring的数据源配置,不直接使用DriverManagerDataSource的原因是由于其没有实现连接池的机制,因此使用C3P0,这时需要加载c3p0的支持JAR包;
另外在数据访问层进行数据操作时如下:
另外也可以继承JdbcDaoSupport类,来使用jdbcTemplate,
这两个类进一步论证一个接口可以有多个实现类,谁实例化则调用哪个实现类中的方法。
具体的代码例子与测试文件可以下载附件参考,欢迎大家斧正。
另外对于jdbcTemplate的事务控制就是使用Spring对于事务的控制,具体内容会在后续文章中补充说明。
SpringJDBC的使用目前来看非常简单,主要就是三个步骤。
一、maven加载所需要的jar包;
一、Spring配置文件进行数据源与jdbctemple的配置;
二、直接在数据访问层使用。
以下是spring配置文件的内容:
<!-- 引入属性文件 --> <context:property-placeholder location="classpath:config.properties" /> <!-- 自动扫描dao和service包( 自动注入) --> <context:component-scan base-package="com.zh.demo" /> <!-- 数据连接池C3P0 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClass}" /> <property name="jdbcUrl" value="${jdbc.jdbcUrl}" /> <property name="user" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean>
这里的注意点在于spring的数据源配置,不直接使用DriverManagerDataSource的原因是由于其没有实现连接池的机制,因此使用C3P0,这时需要加载c3p0的支持JAR包;
另外在数据访问层进行数据操作时如下:
public class BaseDaoImpl implements BaseDao{ @Autowired private JdbcTemplate jdbcTemplate; /** * sql = "insert into user (name,age) values(?,?)" * */ public void addBySql(String sql,final Object[] params) { //--------------methods01------------------------------------// jdbcTemplate.execute(sql); //-----------------or methods02------------------------------// //just like updateBySql } /** * sql = “update table_name set name=?,age=?” * */ public void updateBySql(String sql,final Object[] params) { //--------------methods01------------------------------------// jdbcTemplate.update(sql, new PreparedStatementSetter() { public void setValues(PreparedStatement ps) throws SQLException { ps.setInt(1, Integer.parseInt(params[0].toString())); } }); //-----------------or methods02------------------------------// //jdbcTemplate.update(sql, params); } /** * sql = "delete user where id =? and name = ?;" * */ public void deleteBySql(String sql,final Object[] params) { //----------just like update---------------// jdbcTemplate.update(sql, params); } /** * RowMapper接口封装返回集合,可自定义 * */ public List<UserEntity> getQueryBySql(String sql) { return (List<UserEntity>) jdbcTemplate.query(sql, new BeanPropertyRowMapper<UserEntity>(UserEntity.class)); } }因为Spring配置文件中已经配置,可以直接依赖注入jdbcTemplate;
另外也可以继承JdbcDaoSupport类,来使用jdbcTemplate,
public class BaseDaoImpl2 extends JdbcDaoSupport implements BaseDao{ public void addBySql(String sql,final Object[] params) { this.getJdbcTemplate().update(sql); } }。
这两个类进一步论证一个接口可以有多个实现类,谁实例化则调用哪个实现类中的方法。
具体的代码例子与测试文件可以下载附件参考,欢迎大家斧正。
另外对于jdbcTemplate的事务控制就是使用Spring对于事务的控制,具体内容会在后续文章中补充说明。
上一篇: JAVA环境变量配置
下一篇: 教你数据库挂马
推荐阅读
-
小码农的代码(五)----------web交互之HTTP传输HttpURLConnection
-
小码农的代码(三)----------SpringJDBC多数据源应用
-
小码农的代码(二)----------SpringJDBC事务控制
-
小码农的代码(一)----------SpringJDBC的使用 javaspring
-
小码农的代码(四)----------JAVA中Timer定时器与Spring定时任务
-
小码农的代码(五)----------web交互之HTTP传输HttpURLConnection
-
小码农的代码(一)----------SpringJDBC的使用 javaspring
-
小码农的代码(三)----------SpringJDBC多数据源应用
-
小码农的代码(二)----------SpringJDBC事务控制
-
小码农的代码(零)