项目(1)----用户信息管理系统(2)---项目开发(数据管理层)

   项目开发(1)    

这里实现下面三个步骤: 

      2.0建立数据库

      2.1开发实体User 对象

      2.2开发工具类 JDBCUtils

      2.3开发DAO接口 和实现类

  2.0建立数据库

create table t_user(
  id  varchar2(37) ,
  username varchar2(30),
  password varchar2(30) not null,
  email varchar2(30),
  birthday varchar2(30),
  preference varchar2(30),
  type   varchar2(30),
  description  varchar2(30)
  )

  2.1开发实体User 对象    

import java.util.Date;

public class User {
    private String id;

    private String username;

    private String password;

    private String email;

    private String birthday;

    private String preference;

    private String type;

    private String description;
}
//同时提供set和get,toString方法

   2.2开发工具类 JDBCUtils

 1 import java.io.IOException;
 2 import java.io.InputStream;
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9 import java.util.Properties;
10 
11 import oracle.net.aso.p;
12 
13 public class JDBCUtils {
14 
15     /**
16      * 
17      * DriverManager是驱动的管理类 1)可以通过重载的getConnection()方法 获取数据库连接 较为访问 2)可以管理多个驱动
18      * 如果注册了多个数据库连接 则调用的getConnection()方法 方法 传入的参数可以返回不同的数据库连接
19      * 
20      * 建立与数据库的连接
21      */
22     public static Connection getConnection() {
23         Connection conn = null;
24 
25         Properties properties = new Properties();
26         InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream(
27                 "jdbc.properties");//通过jdbc.properties把信息写在外面体现出java的可塑性
28         try {
29             properties.load(in);
30         } catch (IOException e1) {
31             e1.printStackTrace();
32         }
33 
34         String username = properties.getProperty("jdbc.username");
35         String password = properties.getProperty("jdbc.password");
36         String url = properties.getProperty("jdbc.url");
37         String driver = properties.getProperty("jdbc.driver");
38 
39         try {
40             // 2.获取连接 加载驱动
41             Class.forName(driver);
42             conn = DriverManager.getConnection(url, username, password);
43         } catch (ClassNotFoundException e) {
44             e.printStackTrace();
45         } catch (SQLException e) {
46             e.printStackTrace();
47         }
48         return conn;
49     }    
50 
51     public static void main(String[] args) {
52         System.out.println(getConnection());   //如果显示是一群类似oracle.jdbc.driver.T4CConnection@6a8c436b,那就说明连接成功
53     }
54 
55 }

在jdbc.properties中配置

jdbc.username=hzgg     //数据库用户名
jdbc.password=hzgg     //数据库密码
jdbc.url=jdbc:oracle:thin:@localhost:1521:ORCL  //连接的url
jdbc.driver=oracle.jdbc.driver.OracleDriver  //driver驱动

2.3-1开发DAO接口 

import java.util.List;

import com.study.user.model.User;

public interface UserDao {
 
    public void add(User user);     //注册用户
    
    public void del(String id);     //删除用户
    
    public void update(User user); //更新用户
     
    public User  find(String id);  //查找单个用户
    
    public List<User> getAll();    //查找所有用户
   
}

   2.3-2开发实现DAO接口的类        

  1 import java.sql.Connection;
  2 import java.sql.SQLException;
  3 import java.util.List;
  4 
  5 import javax.management.RuntimeErrorException;
  6 
  7 import org.apache.commons.dbutils.QueryRunner;
  8 import org.apache.commons.dbutils.handlers.BeanHandler;
  9 import org.apache.commons.dbutils.handlers.BeanListHandler;
 10 
 11 import com.study.user.dao.UserDao;
 12 import com.study.user.model.User;
 13 import com.study.user.util.JDBCUtils;
 14 
 15 public class UserDaoImpl implements UserDao {
 16 
 17     private QueryRunner queryRunner = new QueryRunner(); //这个就是dbutils包中的,它的功能十分强大
 18     /*
 19      * 添加用户
 20      */
 21     public void add(User user) {
 22         Connection connection = null;
 23         try {
 24             connection = JDBCUtils.getConnection(); //建立与数据库的连接
 25 
 26             String sql = "insert into t_user(id,username,password,email,birthday,preference,type,description)"
 27                     + "values (?,?,?,?,?,?,?,?)";
 28 
 29             Object[] params = { user.getId(), user.getUsername(), user.getPassword(), user.getEmail(),
 30                     user.getBirthday(), user.getPreference(), user.getType(), user.getDescription() };
 31 
 32             queryRunner.update(connection, sql, params);
 33 
 34         } catch (SQLException e) {
 35             e.printStackTrace();
 36         }
 37     }
 38    /*
 39     * 通过用户id删除用户
 40     */
 41     public void del(String id) {
 42         String sql="delete from t_user  where id=?";
 43         Connection conn=null;
 44         try {
 45             conn=JDBCUtils.getConnection();
 46             //2.使用queryRuner类执行update
 47             queryRunner.update(conn, sql, id);//有几个问号就在后面输几个参数
 48         } catch (Exception e) {
 49             e.printStackTrace();
 50         }
 51     }
 52   /* 
 53    * 更新用户
 54    */
 55     public void update(User user) {
 56         
 57         String sql="update t_user set id=?,username=?,password=?,email=?,birthday=?,preference=?,type=?,description=?   where id =?";
 58         Connection conn=null;
 59         try {
 60             conn=JDBCUtils.getConnection();
 61              Object[] params = {user.getUsername(),user.getPassword(),user.getEmail(),
 62                      user.getBirthday(),user.getPreference(),user.getType(),user.getDescription(),user.getId() };
 63             //2.使用queryRuner类执行update
 64             queryRunner.update(conn, sql, params);
 65         } catch (Exception e) {
 66             e.printStackTrace();
 67         }
 68     }
 69   /*
 70    * 通过用户id,查找单个用户
 71    */
 72     public User find(String id) {
 73         String sql="select * from t_user where id=?";
 74         Connection conn=null;
 75         try {
 76             conn=JDBCUtils.getConnection();
 77             User stu =queryRunner.query(conn, sql, new BeanHandler<User>(User.class),id);//有几个问号就可以在后面输入几个值 new BeanHandler<对象>(当前对象.student)
 78              return stu;
 79         } catch (SQLException e) {
 80              throw new RuntimeException();
 81         }        
 82     }  
 83     /*
 84      * 查询所有用户
 85      */
 86     public List<User> getAll() {
 87 
 88         Connection connection = null;
 89         try {
 90             connection = JDBCUtils.getConnection();
 91 
 92             String sql = "select * from t_user";
 93 
 94             return queryRunner.query(connection, sql, new BeanListHandler<User>(User.class));
 95 
 96         } catch (SQLException e) {
 97             throw new RuntimeException();
 98         }
 99     }
100   }

 

                         

posted on 2017-02-19 20:04  雨点的名字  阅读(333)  评论(0编辑  收藏  举报