项目(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 }