今年年初遇到一个对接ERP与WMS的项目,只做后端数据同步,不进行页面展示,简而言之就是我们接收ERP http请求传送过来的数据然后转存到自己的数据库并将数据同步到WMS系统的数据库中,(ps:我也比较奇怪为什么不直接用http请求进行对接,而来中间再转存一次)。由于项目较小又不需要前端展示就直接只用SpringJDBC进行数据库操作,项目涉及的内容包括http请求接口的开发、多数据库操作,本文先拉出来整理下SpringJDBC的直接使用。
SpringJDBC的使用目前来看非常简单,主要就是三个步骤。
一、maven加载所需要的jar包;
一、Spring配置文件进行数据源与jdbctemple的配置;
二、直接在数据访问层使用。
以下是spring配置文件的内容:
另外在数据访问层进行数据操作时如下:
- 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));
- }
- }
另外也可以继承JdbcDaoSupport类,来使用jdbcTemplate,
- public class BaseDaoImpl2 extends JdbcDaoSupport implements BaseDao{
- public void addBySql(String sql,final Object[] params) {
- this.getJdbcTemplate().update(sql);
- }
- }
这两个类进一步论证 一个接口可以有多个实现类,谁实例化则调用哪个实现类中的方法。
具体的代码例子与测试文件可以下载附件参考,欢迎大家斧正。
另外对于jdbcTemplate的事务控制就是使用Spring对于事务的控制,具体内容会在后续文章中补充说明。