spring的jdbctemplate的crud的基類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;
/***
* 數(shù)據(jù)庫連接對(duì)象
*/
@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是自動(dòng)映射實(shí)體類的
resultList = jt.query(sql, new BeanPropertyRowMapper<T>(cl));
} catch (Exception e) {
e.printStackTrace();
}
return resultList;
}
/***
* 添加,更新,刪除的實(shí)現(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);
}
- struts2+spring+ibatis框架整合實(shí)現(xiàn)增刪改查
- 在Spring使用iBatis及配置講解
- java~springboot~ibatis數(shù)組in查詢的實(shí)現(xiàn)方法
- springboot 多模塊將dao(mybatis)項(xiàng)目拆分出去
- Spring Boot下如何自定義Repository中的DAO方法
- Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對(duì)象DAO模式的方法
- Java的Spring框架中DAO數(shù)據(jù)訪問對(duì)象的使用示例
- Spring中DAO被循環(huán)調(diào)用的時(shí)候數(shù)據(jù)不實(shí)時(shí)更新的解決方法
- Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類封裝
相關(guān)文章
一文搞懂Java MD5算法的原理及實(shí)現(xiàn)
MD5信息摘要算法,一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。本文將詳解MD5算法的原理及實(shí)現(xiàn),感興趣的可以了解一下2022-06-06WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程
這篇文章主要介紹了WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Java實(shí)現(xiàn)定時(shí)任務(wù)的示例代碼
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)定時(shí)任務(wù)的相關(guān)知識(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-11-11Java Set接口及常用實(shí)現(xiàn)類總結(jié)
Collection的另一個(gè)子接口就是Set,他并沒有我們List常用,并且自身也沒有一些額外的方法,全是繼承自Collection中的,因此我們還是簡單總結(jié)一下,包括他的常用實(shí)現(xiàn)類HashSet、LinkedHashSet、TreeSet的總結(jié)2023-01-01