JDBC系列教程之六:一个简单用户相关的数据访问层

2013-08-29|来源: 领悟书生

一个简单用户相关的数据访问层

l  J2EE三层架构简介

       表示层、业务逻辑层、数据访问层,三层之间用接口隔离。


l  定义domain对象User,定义存取用户的接口

User.java

package com.hyneng.jdbc.domain;

import java.util.Date;

/**

* 2010-10-07

* @author HuangYineng

*/

public class User {

   private int id;

   private String name;

   private Date birthday;

   private float money;

   

   ...(setXXX,getXXX)

}

UserDao.java

package com.hyneng.jdbc.dao;

import com.hyneng.jdbc.domain.User;

/**

* 2010-10-07

* @author HuangYineng

*/

public interface UserDao {

   public void addUser(User user);

   public User getUser(int userId);

   public User findUser(String  loginName, String password);

   public void update(User user);

   public void delete(User user);

}

l  用JDBC实现接口

UserDaoJdbcImpl.java

package com.hyneng.jdbc.dao.impl;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import com.hyneng.jdbc.JdbcUtils;

import com.hyneng.jdbc.dao.DaoException;

import com.hyneng.jdbc.dao.UserDao;

import com.hyneng.jdbc.domain.User;

/**

* 2010-10-07

* @author HuangYineng

*/

public class UserDaoJdbcImpl implements UserDao {

   public void addUser(User user) {

      Connection conn = null;

      PreparedStatement ps = null;

      ResultSet rs = null;

      try {

          conn = JdbcUtils.getConnection();

          String sql = "insert into user(name,birthday, money) values  (?,?,?) ";

          ps = conn.prepareStatement(sql);

          ps.setString(1, user.getName());

          ps.setDate(2, new  java.sql.Date(user.getBirthday().getTime()));

          ps.setFloat(3, user.getMoney());

          ps.executeUpdate();

      } catch (SQLException e) {

          throw new DaoException(e.getMessage(), e);

      } finally {

          JdbcUtils.free(rs, ps,  conn);

      }

   }

   public void delete(User user) {

      Connection conn = null;

      Statement st = null;

      ResultSet rs = null;

      try {

          conn = JdbcUtils.getConnection();

          st = conn.createStatement();

          String sql = "delete from user where id=" + user.getId();

          st.executeUpdate(sql);

      } catch (SQLException e) {

          throw new DaoException(e.getMessage(), e);

      } finally {

          JdbcUtils.free(rs, st,  conn);

      }

   }

   public User findUser(String  loginName, String password) {

      Connection conn = null;

      PreparedStatement ps = null;

      ResultSet rs = null;

      User user = null;

      try {

          conn = JdbcUtils.getConnection();

          String sql = "select id, name, money, birthday  from user where name=?";

          ps = conn.prepareStatement(sql);

          ps.setString(1, loginName);

          rs = ps.executeQuery();

          while (rs.next()) {

             user = mappingUser(rs);

          }

      } catch (SQLException e) {

          throw new DaoException(e.getMessage(), e);

      } finally {

          JdbcUtils.free(rs, ps,  conn);

      }

      return user;

   }

   public User getUser(int userId) {

      Connection conn = null;

      PreparedStatement ps = null;

      ResultSet rs = null;

      User user = null;

      try {

          conn = JdbcUtils.getConnection();

          String sql = "select id, name, money, birthday  from user where id=?";

          ps = conn.prepareStatement(sql);

          ps.setInt(1, userId);

          rs = ps.executeQuery();

          while (rs.next()) {

             user = mappingUser(rs);

          }

      } catch (SQLException e) {

          throw new DaoException(e.getMessage(), e);

      } finally {

          JdbcUtils.free(rs, ps,  conn);

      }

      return user;

   }

   private User mappingUser(ResultSet  rs) throws SQLException {

      User user = new User();

      user.setId(rs.getInt("id"));

      user.setName(rs.getString("name"));

      user.setMoney(rs.getFloat("money"));

      user.setBirthday(rs.getDate("birthday"));

      return user;

   }

   public void update(User user) {

      Connection conn = null;

      PreparedStatement ps = null;

      ResultSet rs = null;

      try {

          conn = JdbcUtils.getConnection();

          String sql = "update user set name=?, birthday=?, money=? where  id=? ";

          ps = conn.prepareStatement(sql);

          ps.setString(1, user.getName());

          ps.setDate(2, new  java.sql.Date(user.getBirthday().getTime()));

          ps.setFloat(3, user.getMoney());

          ps.setInt(4, user.getId());

          ps.executeUpdate();

      } catch (SQLException e) {

          throw new DaoException(e.getMessage(), e);

      } finally {

          JdbcUtils.free(rs, ps,  conn);

      }

   }

}

DaoException.java

package com.hyneng.jdbc.dao;

/**

* 2010-10-07

* @author HuangYineng

*/

public class DaoException extends RuntimeException {

   private static final long serialVersionUID = 1L;

   public DaoException() {

   }

   public DaoException(String message)  {

      super(message);

   }

   public DaoException(Throwable  cause) {

      super(cause);

   }

   public DaoException(String message,  Throwable cause) {

      super(message, cause);

   }

}

本文链接:JDBC系列教程之六:一个简单用户相关的数据访问层,转自请注明:http://www.656463.com/article/800

相关问答

更多

如何用JAVA编写一个简单用户登陆界面

什么都不说了 直接给你代码吧 package com.moliying.ui; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.List; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedWriter; ...

Linux单用户维护模式 能做什么操作

啥都能干 修改root密码 修改各个级别的启动项 修改网络参数 ...... 不能用的有: 远端用户登录,因为你已经登录了。 Xwindow和X下的所有应用程序。因为X没启动

怎么进Linux单用户模式

linux进入单用户模式的方法是有很多的。进入单用户模式的前提是系统引导器能正常工作。下面以GRUB启动为例说明进入单用户模式的方法。在GRUB启动菜单里有''a”, “e ”, “c” 三个操作按键,使用这三个按键均可以进入单用户模式。 1、使用 "a" 操作按键进入单用户模式。 这是进入单用户模式最快速的方法。 在GRUB启动菜单里使用 a 操作按键编辑kernel 参数,在末行输入 single,来告诉linux 内核后续的启动过程需要进入单用户模式。 编辑后按enter 键,即可启动单用户 ...

如何进入Linux单用户模式

进入单用户模式步骤 从GRUB进入系统启动界面(输入GRUB密码 若已配置密码) 进入系统菜单后 选择一个kernel版本的系统 按a键 编辑引导 向末尾输入【空格】single 再按enter保存退出 按b 启动系统进入单用户模式 官方资料:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/System_Administration_Guide/s1-rescuemode-booting-s ...

linux怎么进入单用户模式

1、系统启动时,按键盘上的“e",直到进入下面这个页面: 2、选择kernel...(即第二项)这一项,按下”e",在行尾输入:空格single,然后回车确定 3、按键盘的"b",重新引导系统 4、然后就进入了单用户模式下

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多