spring的jdbctemplate的crud的基类dao

 更新时间:2014年02月10日 09:20:30   作者:  
本文主要介绍了使用spring的jdbctemplate进行增删改查的基类Dao的简单写法,需要的朋友可以参考下

复制代码 代码如下:

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);
 }

相关文章

  • Java中关于字符串的编码方式

    Java中关于字符串的编码方式

    这篇文章主要介绍了Java中关于字符串的编码方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java 域对象共享数据的实现

    java 域对象共享数据的实现

    本文主要介绍了java 域对象共享数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • java图形界面之布局设计

    java图形界面之布局设计

    这篇文章主要介绍了java图形界面之布局设计的相关资料,需要的朋友可以参考下
    2015-06-06
  • java中long(Long)与int(Integer)之间的转换方式

    java中long(Long)与int(Integer)之间的转换方式

    这篇文章主要介绍了java中long(Long)与int(Integer)之间的转换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 在idea里如何调整maven内存

    在idea里如何调整maven内存

    这篇文章主要介绍了在idea里如何调整maven内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • 详解全局事务注解@GlobalTransactional的识别

    详解全局事务注解@GlobalTransactional的识别

    这篇文章主要为大家介绍了详解全局事务注解@GlobalTransactional的识别源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • springboot的调度服务与异步服务使用详解

    springboot的调度服务与异步服务使用详解

    本文主要介绍了Java的ScheduledExecutorService接口和Spring Boot中如何使用调度线程池,包括核心参数、创建方式、自定义线程池、Cron表达式,以及如何在Spring Boot中配置和使用异步任务,此外,还讨论了如何模拟系统繁忙和调整异步线程池的拒绝策略
    2025-02-02
  • Java双括弧初始化操作技巧

    Java双括弧初始化操作技巧

    这篇文章主要介绍了Java双括弧初始化操作技巧,这种方法不仅提高了代码的可读性,而且简化了代码的数量,需要的朋友可以参考下
    2015-12-12
  • Java实现单链表的操作

    Java实现单链表的操作

    这篇文章主要为大家详细介绍了Java实现单链表的操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Spring Boot与前端配合与Idea配置部署操作过程

    Spring Boot与前端配合与Idea配置部署操作过程

    这篇文章主要介绍了Spring Boot与前端配合与Idea配置部署的操作过程,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2018-02-02

最新评论