DAO接口及实现类

DAO接口中定义了所有的用户操作,如添加记录、删除记录及查询记录。

1 package chapter13;
2 import java.util.*;
3 public interface UserDAO {
4     public void insert(User user) throws Exception;
5     public void update(User user) throws Exception;
6     public void delete(int userid) throws Exception;
7     public User queryById(int userid) throws Exception;
8     public List<User> queryAll() throws Exception;
9 }

DAO实现类实现了DAO接口,并且实现了接口中定义的所有方法。

  1 package chapter13;
  2
  3 import java.util.*;
  4 import java.sql.*;
  5 import java.sql.Date;
  6
  7 public class UserDAOImpl implements UserDAO {
  8
  9     @Override
 10     public void insert(User user) throws Exception {
 11         // TODO Auto-generated method stub
 12         String sql="insert into user(username,password) values(?,?)";
 13         PreparedStatement preparedStatement=null;
 14         DataBaseConnection dbc=null;
 15         try{
 16             dbc=new DataBaseConnection();
 17             preparedStatement=dbc.getConnection().prepareStatement(sql);
 18             preparedStatement.setString(1, user.getUserName());
 19             preparedStatement.setString(2, user.getPassword());
 20             preparedStatement.executeUpdate();
 21             preparedStatement.close();
 22         }
 23         catch(Exception e){
 24             throw new Exception("操作出现异常");
 25         }finally {
 26             dbc.close();
 27         }
 28
 29     }
 30
 31     @Override
 32     public void update(User user) throws Exception {
 33         // TODO Auto-generated method stub
 34         String sql="update user set username=?,password=? where userid=?";
 35         PreparedStatement preparedStatement=null;
 36         DataBaseConnection dbc=null;
 37         try{
 38             dbc=new DataBaseConnection();
 39             preparedStatement=dbc.getConnection().prepareStatement(sql);
 40             preparedStatement.setString(1, user.getUserName());
 41             preparedStatement.setString(2, user.getPassword());
 42             preparedStatement.setInt(3, user.getUserId());
 43             preparedStatement.executeUpdate();
 44             preparedStatement.close();
 45         }
 46         catch(Exception e){
 47             throw new Exception("操作出现异常");
 48         }finally {
 49             dbc.close();
 50         }
 51     }
 52
 53     @Override
 54     public void delete(int userid) throws Exception {
 55         // TODO Auto-generated method stub
 56         String sql="delete from user where userid=?";
 57         PreparedStatement preparedStatement=null;
 58         DataBaseConnection dbc=null;
 59         try{
 60             dbc=new DataBaseConnection();
 61             preparedStatement=dbc.getConnection().prepareStatement(sql);
 62             preparedStatement.setInt(1, userid);
 63             preparedStatement.executeUpdate();
 64             preparedStatement.close();
 65         }
 66         catch(Exception e){
 67             throw new Exception("操作出现异常");
 68         }finally {
 69             dbc.close();
 70         }
 71     }
 72
 73     @Override
 74     public User queryById(int userid) throws Exception {
 75         // TODO Auto-generated method stub
 76         User user=null;
 77         String sql="select * from user where userid=?";
 78         PreparedStatement preparedStatement=null;
 79         DataBaseConnection dataBaseConnection=null;
 80         try{
 81             dataBaseConnection=new DataBaseConnection();
 82             preparedStatement=dataBaseConnection.getConnection().prepareStatement(sql);
 83             ResultSet rSet=preparedStatement.executeQuery();
 84             if(rSet.next()){
 85                 user=new User();
 86                 user.setUserId(rSet.getInt(1));
 87                 user.setUserName(rSet.getString(2));
 88                 user.setPassword(rSet.getString(3));
 89             }
 90             rSet.close();
 91             preparedStatement.close();
 92         }
 93         catch(Exception e){
 94             throw new Exception("操作出现异常");
 95         }finally {
 96             dataBaseConnection.close();
 97         }
 98         return user;
 99     }
100
101     @Override
102     public List<User> queryAll() throws Exception {
103         // TODO Auto-generated method stub
104         List<User> all=new ArrayList<User>();
105         String sql="select * from user";
106         PreparedStatement preparedStatement=null;
107         DataBaseConnection dataBaseConnection=null;
108         try{
109             dataBaseConnection=new DataBaseConnection();
110             preparedStatement=dataBaseConnection.getConnection().prepareStatement(sql);
111             ResultSet rSet=preparedStatement.executeQuery();
112             if(rSet.next()){
113                 User user=new User();
114                 user=new User();
115                 user.setUserId(rSet.getInt(1));
116                 user.setUserName(rSet.getString(2));
117                 user.setPassword(rSet.getString(3));
118                 all.add(user);
119             }
120             rSet.close();
121             preparedStatement.close();
122         }
123         catch(Exception e){
124             throw new Exception("操作出现异常");
125         }finally {
126             dataBaseConnection.close();
127         }
128         return all;
129     }
130
131 }
时间: 2025-01-07 10:41:08

DAO接口及实现类的相关文章

Dao接口和实现类以及Service接口和实现类代码抽取

紧接着上次无线点餐项目的文档,我们进行Dao层抽取. 6.Dao接口以及实现类代码抽取 对于BoardDao和CuisineDao的处理接口和实现类,除了定义自己的特有方法外,其他基本功能的CRUD方法都一样,只是操作的实体对象不一样.为了代码的复用,简化代码,我们可以将公共的CRUD方法提取到BaseDao中,只需要实现接口即可. 同理, 不同的实现类,实现CRUD相同的业务逻辑的时, 除了操作的实体不同,其他都是相同的, 所以我们可以把相同的业务逻辑实现,抽取出来,放到BaseSericeI

springData__jpa对数据库进行操作---dao接口和 测试类

一.dao接口 采用方法命名规则,对数据库进行操作 前提是接口必须继承 JPARepository类 package cn.dzl.jpa.dao; import cn.dzl.jpa.entity.Customer; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface CustomerDao extends JpaRepository<Cust

使用动态代理实现dao接口

使用动态代理实现dao接口的实现类 MyBatis允许只声明一个dao接口,而无需写dao实现类的方式实现数据库操作.前提是必须保证Mapper文件中的<mapper>标签的namespace属性值必须要和dao接口的类路径一致,MyBatis容器会自动通过动态代理生成接口的实现类. Mapper.java 1 package cn.mybatis.dao; 2 3 import cn.mybatis.domain.Student; 4 5 public interface StudentMa

阿里面试题:Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?

一.解析XML首先,Mybatis在初始化SqlSessionFactoryBean的时候,找到mapperLocations路径去解析里面所有的XML文件,这里我们重点关注两部分.1.创建SqlSourceMybatis会把每个SQL标签封装成SqlSource对象.然后根据SQL语句的不同,又分为动态SQL和静态SQL.其中,静态SQL包含一段String类型的sql语句:而动态SQL则是由一个个SqlNode组成. 假如我们有这样一个SQL: <select id="getUserB

Mybatis自动生成实体类、dao接口和mapping映射文件

由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到工程中稍微修改就可以直接使用了. 生成器目录如下: 首先进入lib文件夹中,该目录如下: (图上文件下载地址:http://download.csdn.net/detail/qiwei31229/9790909) 主要修改generatorConfig.xml <?xml version="1

mybatis怎么自动生成实体类,Mapper配置文件和Dao接口

1.首先准备好jar包 https://github.com/mybatis/generator/releases下载MyBatis Generator 下载压缩包后,打开可以看到lib目录下有我们需要的jar包,添加到项目引用 2.和Hibernate逆向生成一样,这里也需要一个配置文件: generator.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigu

zTree实现地市县三级级联DAO接口

ProvinceDao.java: /** * @Title:ProvinceDao.java * @Package:com.gwtjs.dao * @Description:省份地市县级三级级联DAO接口 * @author:Youhaidong(游海东) * @date:2014-5-10 下午10:39:21 * @version V1.0 */ package com.gwtjs.dao; import java.util.List; import com.gwtjs.model.Pro

zTree实现地市县三级级联DAO接口实现

ProvinceDaoImpl.java: /** * @Title:ProvinceDaoImpl.java * @Package:com.gwtjs.dao.impl * @Description:省份地市县级三级级联DAO接口实现 * @author:Youhaidong(游海东) * @date:2014-5-10 下午10:40:35 * @version V1.0 */ package com.gwtjs.dao.impl; import java.util.ArrayList; i

为何有DAO与Service层?为何先搞Dao接口在搞DaoImpl实现?直接用不行吗?

转自 http://blog.sina.com.cn/s/blog_4b1452dd0102wvox.html 我们都知道有了Hibernate后,单独对数据的POJO封装以及XML文件要耗损掉一个类(Orz意思是你需要精力写一个类).然后,在大部分的服务中,我们又需要单独写一个Dao接口,并加个DaoImpl实现来操作数据库(好吧,再耗损2个类).紧接着,我们发现其实Service层也要单独写一个类(再加1个). 一共4个类外加1个xml--这不是作死么,5个文件.人家好端端地写PHP可能在一