myweb 4 springJdbcTemplate的简单封装

我还对jdbcTemplate做了简单封装,技术有限,很简单的封装了四个通用的方法。
日志因为还没有设计好,就简单写了。

package com.myweb.core.commons;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2017/6/14.
 *   
 */
@Component("jdbcTemplateCommon")
public class JdbcTemplateCommons {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    private final static Logger logger = LoggerFactory.getLogger("jdbcTemplateLog");

    /**
     * 通用的update语句,适用于实体类作为参数的类型
     * @param sql
     * @param object
     */
    public void updateSql(String sql,Object object) {
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
        SqlParameterSource sqlParameterSource = new BeanPropertySqlParameterSource(object);
        try {
            namedParameterJdbcTemplate.update(sql,sqlParameterSource);
        }catch (Exception e){
            logger.error("error sql"+sql);
        }
    }
    /**
     * 通用的update语句,适用于数组作为参数的类型
     * @param sql
     * @param objects
     */
    public void updateSql(String sql,Object[] objects){
        try {
            jdbcTemplate.update(sql,objects);
        }catch (Exception e){
            logger.error("error sql"+sql);
        }
    }
    /**
     * 通用的select语句,适用于实体作为参数的类型
     * @param sql
     * @param object
     * @return
     */
    public List selectSql(String sql, Object object){
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
        SqlParameterSource sqlParameterSource = new BeanPropertySqlParameterSource(object);
        List list=null;
        try {
            list = namedParameterJdbcTemplate.query(sql, sqlParameterSource, new BeanPropertyRowMapper<>(object.getClass()));
        }catch (Exception e){
            logger.error("error sql"+sql);
        }
        return list;
    }
    /**
     * 通用的select语句,适用于数组作为参数的类型
     * @param sql
     * @param objects
     * @return
     */
    public Object selectSql(String sql, Object[] objects,Class clazz){
        List list=null;
        try {
            list = jdbcTemplate.query(sql, objects, new BeanPropertyRowMapper<>(clazz));
        }catch (Exception e){
            list=new ArrayList<>();
            logger.error("error sql"+sql);
        }
        return list.get(0);
    }
}

 
 

dao的调用也是很简单的,也减少了很多代码量,下面是测试dao:

package com.myweb.core.myehtest.dao.impl;

import com.myweb.core.commons.JdbcTemplateCommons;
import com.myweb.core.myehtest.dao.UserDao;
import com.myweb.core.myehtest.model.User;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Created by Administrator on 2017/6/11.
 */
@Repository("userDao")
public class UserDaoImpl implements UserDao {
    @Autowired
    private JdbcTemplateCommons jdbcTemplate;

    @Override
    public User selectById(String id) {
        String sql = "select t.id,t.name,t.password from T_User t where t.id = ?";
        Object[] params = new Object[]{id};
        User user = (User)jdbcTemplate.selectSql(sql, params, User.class);
        return user;
    }
 
    @Override
    public void insertUser(User user) {
        String sql="insert into t_user(id,name,password) values(:id,:name,:password)";
        jdbcTemplate.updateSql(sql,user);
    }

    @Override
    public void updateUser(String id,String name) {
        String sql="update t_user t set t.name=? where t.id=?";
        jdbcTemplate.updateSql(sql, new Object[]{name,id});
    }

    @Override
    public List selectUser(User user) {
        String sql="select t.id,t.name,t.password from t_user t where t.name=:name ";
        List list = (List) jdbcTemplate.selectSql(sql, user);
        return list;
    }

    @Override
    public User selectUserByNameAndPassword(String name, String password) throws Exception {
        String sql="Select t.id,t.name,t.password from t_user t where t.name=? and t.password=? ";
        Object o = jdbcTemplate.selectSql(sql, new Object[]{name, password}, User.class);
        return (User) o;
    }
}


大家有好的想法,望指正。

你可能感兴趣的:(myweb 4 springJdbcTemplate的简单封装)