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


猜你喜欢
- 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1)
- 这篇讲的是如何生成一个自定义的ImageView,实现自动放大缩小动画。 为什么实现这个功能呢?因为我想在ViewPager实现图片放大缩小
- 一、RFC882文档简单说明RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮
- 一、静态代理模式1.1、 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标
- 1、什么是线程及线程池线程是操作系统进行时序调度的基本单元。线程池可以理解为一个存在线程的池子,就是一个容器,这个容器只能存在线程。这个容器
- 一.服务器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据。如果用户把浏览器的隐私级别调到最高,这时浏览器
- 智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多A
- 1.创建一个redis maven项目,在pom中添加如下信息spring boot 版本 <parent> <group
- Bluetooth结构1、JAVA层frameworks/base/core/java/android/bluetooth/包含了bluet
- 本文实例讲述了Java输入输出流。分享给大家供大家参考,具体如下:字节输出流,输出到文件中(写)OutputStream抽象类选好文件Fil
- Java 2D API通过扩展抽象窗口工具箱(AWT),为Java程序提供了二维图像,文本和图形的功能。这个复杂的渲染包支持线形图像,文本和
- 本文主要介绍了C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例),分享给大家,具体如下:实现效果:通过Sta
- RocketMQ发送消息我们在使用RocketMQ发送消息时,一般都会使用DefaultMQProducer,类型的代码如下:Default
- 在开发中我们经常需要把我们的应用设置为全屏,有两种方法,一中是在代码中设置,另一种方法是在配置文件里改!一、在代码中设置:package c
- springboot的最强大的就是那些xxxAutoconfiguration,但是这些xxxAutoConfiguration又依赖那些s
- 异常方法//返回此可抛出对象的详细信息消息字符串public String getMessage() //将此可抛发对象及其回溯到标准错误流
- 在JAVA克隆对象不能简单的使用clone方法,clone方法只是进行浅克隆。请看下方:深度克隆类:Java代码 import java.i
- Spire.Cloud.SDK for .NET提供了接口PdfSecurityApi可用于加密、解密PDF文档。本文将通过C#代码演示具体
- 网上看了很多篇文章关于如何配置mybatis的logback日志的,复杂的简单的都有,但是有用的没几个,耽误了很多时间。通过对logback
- 本文实例讲述了Android编程实现的短信编辑器功能。分享给大家供大家参考,具体如下:修改短信数据库,从而生成任意手机号发送的短信。Andr