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;
 /***
  * 数据库连接对象
  */
 @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);
 }

(0)

相关推荐

  • 使用JDBC实现数据访问对象层(DAO)代码示例

    JAVA是面向对象的语言,开发者在操作数据的时候,通常更习惯面对一个特定类型的对象,如一个用户就是一个User类的对象.DAO层需要做的,就是为上层提供充分的对象支持,让上层再也看不到具体的数据,而是一个个活生生的对象. 增加,删除,查询和修改操作是DAO需要做的最基本的4项操作.查询一般需要提供遍历查询和id查询,对于遍历查询,DAO需要提供User泛型的list对象,对于id查询则提供已经装配好数据的User对象,至于增加和修改操作,上层一般会提供一个User对象,DAO把User对象中的数

  • BaseJDBC和CRUDDAO的写法实例代码

    我们首先看下BASEJDBC的写法实例: package com.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mysql.jdbc.Driver; public class BaseJDBC { // 表示你要操作的是哪种类型

  • 基于JDBC封装的BaseDao(实例代码)

    最近闲暇时萌发写一写dao的封装的例子,就将以前写的整理一下. public class BaseDao<T> { Connection conn; PreparedStatement st; ResultSet rs; JdbcUtil jdbcUtil = new JdbcUtil(); int result = 0; private Class<T> persistentClass; @SuppressWarnings("unchecked") publi

  • 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); /***  *  添加,更新,删除接

  • Spring如何集成ibatis项目并实现dao层基类封装

    Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库的操作拥有更加灵活的控制,对于那些经常需要调用本地数据库函数自定义SQL语句,或是喜欢自己优化SQL执行效率的开发者来说,iBatis是一个非常不错的选择. 而得到广泛应用的开源企业架构SpringFramework,也很好的将其进行了集成,使得iBatis在 SpringFramework中的使用

  • 浅析Spring的JdbcTemplate方法

    spring对于数据访问层提供了多种的模板技术.如果直接使用JDBC,那么可以选择JdbcTemplate.如果使用的是对象关系映射框架,使用hibernate应该使用HibernateTemplate模板,使用JPA则应该使用JpaTemplate. 除此之外,Spring框架为每一项的持久层技术都提供了相应的帮助类来简化操作.对于Jdbc提供了JdbcDaoSupport类.对于Hibernate技术提供了HibernateDaoSupport类.对于MyBatis提供了SqlMapClie

  • Spring框架+jdbcTemplate实现增删改查功能

    SpringMVC架构(Model(实体类),Service,Controller层) Controller(接收参数调用业务层)–>Service(调用持久层,处理业务逻辑)–>Dao(与数据库交互) 1. IOC(控制反转是一种设计思想而不是技术) DI(依赖注入):是IOC思想的一种技术实现 IOC容器是Spring提供的保存Bean对象的容器 Bean管理操作 1.Xml + 注解 2.javaConfig + 注解 通过xml配置Bean:TODO: 通过javaConfig 配置B

  • 超细致讲解Spring框架 JdbcTemplate的使用

    目录 JdbcTemplate基本使用 1-JdbcTemplate基本使用-概述(了解) 2-JdbcTemplate基本使用-开发步骤(理解) 3-JdbcTemplate基本使用-快速入门代码实现(应用) 4-JdbcTemplate基本使用-spring产生模板对象分析(理解) 5-JdbcTemplate基本使用-spring产生模板对象代码实现(应用) 6-JdbcTemplate基本使用-spring产生模板对象代码实现 7-JdbcTemplate基本使用-常用操作-更新操作(应

  • Spring框架JdbcTemplate数据库事务管理完全注解方式

    目录 Spring JdbcTemplate事务注解 配置类方式配置 完全注解方式 一.创建配置类 二.测试注解方式的事务管理 Spring JdbcTemplate事务注解 配置类方式配置 在之前的操作中,相关的配置还是写在了 xml 配置文件中.现在,使用配置类的方式进行配置. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework

  • spring学习JdbcTemplate数据库事务管理

    目录 spring JdbcTemplate数据库事务管理 一.spring 中的事务管理 二.spring 事务管理 API 三.使用事务管理 1. 配置文件 2. 类上添加事务注解 spring JdbcTemplate数据库事务管理 现在有个账户表,里面存着用户金额. 如果要真正地做好转账的操作,就要用到事务,否则当出现异常后会出现数据不一致等问题. try { // 第一步 开启事务 // 第二步 进行业务操作 // 第三步 没有发生异常,提交事务 } catch(){ // 第四步 发

  • spring中JdbcTemplate操作oracle的存储过程实例代码

    目录 场景: 功能: 1.JdbcTemplate调用存储过程(Procedure)不带返回值 1.1存储过程 1.2代码 2.JdbcTemplate调用存储过程(Procedure)带返回值但值不是集合类型 2.1存储过程 2.2代码 3.JdbcTemplate调用存储过程(Procedure)带返回值且值集合类型 3.1存储过程 3.2代码 4.附本例使用建表语句 5.附本例使用完整测试代码 总结 场景: 使用java代码调用oracle的存储过程,本例使用JdbcTemplate模板类

  • Asp.Net 通用数据操作类 (附通用数据基类)第1/2页

    文章内容为本站编辑,创作.你可以任意转载.发布.使用但请务必以明文标注文章原始出处及本声明 http://www.opent.cn  作者:浪淘沙此贴的方法会持续更新, 此文件要引用与数据操作的基类 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.Web

  • C++派生类与基类的转换规则

    只有公用派生类才是基类真正的子类型,它完整地继承了基类的功能.基类与派生类对象之间有赋值兼容关系,由于派生类中包含从基类继承的成员,因此可以将派生类的值赋给基类对象,在用到基类对象的时候可以用其子类对象代替. 具体表现在以下几个方面: 派生类对象可以向基类对象赋值. 可以用子类(即公用派生类)对象对其基类对象赋值.如 A a1; //定义基类A对象a1 B b1; //定义类A的公用派生类B的对象b1 a1=b1; //用派生类B对象b1对基类对象a1赋值 在赋值时舍弃派生类自己的成员. 实际上

随机推荐