spring的jdbctemplate的crud的基类dao

时间:2022-05-30 13:05:17 


import java.util.List;

/***
 * 基本接口
 *
 * @author xyq
 * @param <T>
 *
 */
public interface BaseDaoInf<T> {

 /***
  * 查询接口
  *
  * @return
  */
 public List<T> find(String sql, Object[] parameters, Class<T> cl);

 /***
  *  添加,更新,删除接口
  * @param sql
  * @param id
  * @param cl
  * @return
  */
 public int addOrUpdateOrDelete(String sql,Object[] parameters, Class<T> cl);
}


import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementSetter;

import com.xyq.all.dao.inf.BaseDaoInf;

public class BaseDaoImpl<T> implements BaseDaoInf<T> {

 /**
  *
  */
 private static final long serialVersionUID = 1L;
 /***
  * 数据库连接对象
  */
 @Resource(name = "jdbcTemplate")
 private JdbcTemplate jt;

 /***
  * 查询接口
  */

 @Override
 public List<T> find(String sql, Object[] parameters, Class<T> cl) {

  List<T> resultList = null;
  try {
   if (parameters != null && parameters.length > 0)
    resultList = jt.query(sql, parameters,
      new BeanPropertyRowMapper<T>(cl));
   else
    // BeanPropertyRowMapper是自动映射实体类的
    resultList = jt.query(sql, new BeanPropertyRowMapper<T>(cl));
  } catch (Exception e) {
   e.printStackTrace();
  }
  return resultList;
 }

 /***
  * 添加,更新,删除的实现,返回1,0,-1
  */
 @Override
 public int addOrUpdateOrDelete(String sql, final Object[] parameters,
   Class<T> cl) {

  int num = 0;
  try {
   if (parameters == null || parameters.length == 0)
    num = jt.update(sql);
   else
    num = jt.update(sql, new PreparedStatementSetter() {

     @Override
     public void setValues(PreparedStatement ps)
       throws SQLException {

      for (int i = 0; i < parameters.length; i++)
       ps.setObject(i + 1, parameters[i]);
     }
    });
  } catch (Exception e) {
   e.printStackTrace();
   num = -1;
  }
  return num;
 }
}


/**
 * 用户操作接口
 * @author xyq
 *
 */
public interface UserInfoDaoInf {

 /***
  * 查询是否有用户
  * @param user
  * @return
  */
 public UserInfo findUser(UserInfo user);

 /***
  * 删除用户
  * @param user
  * @return
  */
 public int deleteUserById(UserInfo user);

 /***
  * 添加用户
  * @param user
  * @return
  */
 public int addUser(UserInfo user);

 /***
  * 更新用户
  * @param user
  * @return
  */
 public int updateUser(UserInfo user);
}


import java.util.List;

import org.springframework.stereotype.Repository;

import com.xyq.all.dao.inf.UserInfoDaoInf;
import com.xyq.all.entity.UserInfo;

@Repository("userDao")
public class UserInfoDaoImpl extends BaseDaoImpl<UserInfo> implements
  UserInfoDaoInf {


 /***
  * 查找用户信息
  */
 @Override
 public UserInfo findUser(UserInfo user) {

  List<UserInfo> list = null;
  String sql = "select * from userInfo where username=? and password =? ";
  list = super.find(sql,
    new String[] { user.getUserName(), user.getPassword() },
    UserInfo.class);
  if (list != null && list.size() > 0)
   return list.get(0);
  return null;
 }

 /***
  * 删除用户
  */
 @Override
 public int deleteUserById(UserInfo user) {

  String sql = "delete from userInfo where userid = ?";
  return super.addOrUpdateOrDelete(sql, new Integer[] { user.getUserId() },
    UserInfo.class);
 }

 /***
  * 添加用户
  */
 @Override
 public int addUser(UserInfo user) {

  String sql = "insert into userInfo values(null,?,?,?)";

  return super.addOrUpdateOrDelete(
    sql,
    new Object[] { user.getUserName(), user.getPassword(),
      user.getSecondPassword() }, UserInfo.class);
 }

 /***
  * 更新用户
  */
 @Override
 public int updateUser(UserInfo user) {

  String sql = "update userInfo set userName=?,password = ?,secondPassword = ? where userid=?";
  return super.addOrUpdateOrDelete(
    sql,
    new Object[] { user.getUserName(), user.getPassword(),
      user.getSecondPassword(), user.getUserId() },
    UserInfo.class);
 }

标签:spring,jdbctemplate,crud,基类
0
投稿

猜你喜欢

  • SpringMVC 向jsp页面传递数据库读取到的值方法

    2022-03-29 00:51:15
  • JavaWeb实现多文件上传及zip打包下载

    2023-11-16 16:41:25
  • Android四种数据存储的应用方式

    2023-07-25 05:01:06
  • java Hibernate多对多映射详解及实例代码

    2023-07-02 07:24:40
  • vs2019永久配置opencv开发环境的方法步骤

    2023-11-02 19:38:58
  • Java使用substring()截取(提取)子字符串

    2023-09-29 17:02:04
  • SpringBoot 如何从配置文件读取值到对象中

    2023-10-13 15:43:15
  • List调用toString()方法后,去除两头的中括号实例

    2023-09-28 11:18:56
  • flutter实现扫码枪获取数据源禁止系统键盘弹窗示例详解

    2023-07-23 01:52:41
  • Springcloud-nacos实现配置和注册中心的方法

    2023-06-15 13:46:42
  • 聊聊Java 中的线程中断

    2021-05-31 02:04:30
  • Java实现多用户注册登录的幸运抽奖

    2023-07-30 11:57:44
  • Java中如何动态创建接口的实现方法

    2023-11-25 15:13:02
  • 网易Java程序员两轮面试 请问你能答对几个?

    2023-11-29 10:32:08
  • Java实现TopK问题的方法

    2023-11-10 20:32:14
  • opencv利用鼠标滑动画出多彩的形状

    2023-11-03 05:20:57
  • Spring main方法中如何调用Dao层和Service层的方法

    2023-11-28 23:15:19
  • 实例解析JAVA中代码的加载顺序

    2021-10-26 14:57:22
  • Java实现按权重随机数

    2023-11-28 23:15:32
  • Java Ehcache缓存框架入门级使用实例

    2022-08-23 20:51:54
  • asp之家 软件编程 m.aspxhome.com