最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 /***
  * 添加,更新,刪除的實現(xiàn),返回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 域對象共享數據的實現(xiàn)

    java 域對象共享數據的實現(xiàn)

    本文主要介紹了java 域對象共享數據的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • java圖形界面之布局設計

    java圖形界面之布局設計

    這篇文章主要介紹了java圖形界面之布局設計的相關資料,需要的朋友可以參考下
    2015-06-06
  • java中l(wèi)ong(Long)與int(Integer)之間的轉換方式

    java中l(wèi)ong(Long)與int(Integer)之間的轉換方式

    這篇文章主要介紹了java中l(wèi)ong(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中如何使用調度線程池,包括核心參數、創(chuàng)建方式、自定義線程池、Cron表達式,以及如何在Spring Boot中配置和使用異步任務,此外,還討論了如何模擬系統(tǒng)繁忙和調整異步線程池的拒絕策略
    2025-02-02
  • Java雙括弧初始化操作技巧

    Java雙括弧初始化操作技巧

    這篇文章主要介紹了Java雙括弧初始化操作技巧,這種方法不僅提高了代碼的可讀性,而且簡化了代碼的數量,需要的朋友可以參考下
    2015-12-12
  • Java實現(xiàn)單鏈表的操作

    Java實現(xiàn)單鏈表的操作

    這篇文章主要為大家詳細介紹了Java實現(xiàn)單鏈表的操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring Boot與前端配合與Idea配置部署操作過程

    Spring Boot與前端配合與Idea配置部署操作過程

    這篇文章主要介紹了Spring Boot與前端配合與Idea配置部署的操作過程,本文圖文并茂給大家介紹的非常詳細,需要的朋友可以參考下
    2018-02-02

最新評論

呼和浩特市| 嘉定区| 米林县| 分宜县| 清流县| 泗洪县| 天津市| 尼玛县| 横山县| 井冈山市| 吴旗县| 漳浦县| 麻栗坡县| 兴文县| 蓬溪县| 韶山市| 日照市| 乌拉特后旗| 塔河县| 盱眙县| 庐江县| 灵寿县| 博乐市| 观塘区| 涿鹿县| 潼关县| 资兴市| 阳城县| 新乐市| 聂荣县| 临邑县| 河西区| 将乐县| 临夏市| 兴国县| 武宣县| 漳平市| 正宁县| 汝阳县| 宁陕县| 彩票|