DAO 层
DAO层数据连接对象
作用:将数据库中的数据转化为java的对象并返回(读数据)
将java的对象转化为数据库中表的一条数据(写数据)
java对象在这里就是所谓的Entity
DAO 要达到的目的:将数据库的操作面向对象化
实体:
Student 表(id name age sex) 这个是在数据库中形式;
Student 类 属性 id, name ,age, sex 在java中的形式;
用java中的类 来描述数据库中的表
实体类: 用于对应数据库中的表。通常实体类的名字和数据库中表的名字是一致的。
详细的参考文献http://baike.baidu.com/view/1300085.htm?fr=aladdin
实体类<======> 表
属性<======> 字段
对象 <======> 一个记录 就是一条数据
1 DAO的制作 就是讲数据库中的数据转换为一个类详细代码如下
package day01pm.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import day01pm.entity.Student;
/**
* DAO 数据连接对象
*
* StudentDAO 用于操作数据库Student表
*
* @author ssd
*
*/
public class StudentDAO {
/**
* 根据学生的姓名查询学生的信息
* @param name
* @return
*/
public Student findStudentByName(String name){
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl"
,"scott"
,"Shen2014");
Statement state = conn.createStatement();
String sql = "SELECT * FROM student WHERE name = '"+name+"'";
/**
*根据用户名查询该用户的信息
*并将这条数据转化为一个Student对象返回
*/
ResultSet rs = state.executeQuery(sql);
if(rs.next()){
Student student = new Student();
student.setId(rs.getString("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setSex(rs.getString("sex"));
return student;
}
}catch (Exception e){
e.printStackTrace();
}finally{
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
return null;
}
}
2.定义一个Student类
package day01pm.entity;
import java.io.Serializable;
/**
* 实体类Student
* 该类描述数据库中Student 表
* 其每一个实例都可以代表Student表的一行数据
*
* 通常情况下实体都可以序列化的
*
* @author ssd
*
*/
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
private String id;
private String name;
private int age;
private String sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3 定义服务 什么样的服务 (这里的服务是通过name打印其他的信息 如name age sex)
package day01pm;
import day01pm.dao.StudentDAO;
import day01pm.entity.Student;
/**
* 业务逻辑类
* @author ssd
*
*/
public class StudentService {
private StudentDAO studentDAO = new StudentDAO();
public void reg(String name, int age, String sex){
}
public void findStudentByName(String name){
//对用户输入的信息进行必要的判断
if(name != null&&!"".equals(name)){
//向DAO 获取学生信息
Student student = studentDAO.findStudentByName(name);
if(student != null){
System.out.println("学生" +student.getName()+
"年龄" +student.getAge()+
"性别"+student.getSex());
}else{
System.out.println("查无此人!");
}
}
}
}
4 测试
package day01pm;
/**
* 测试类
* @author ssd
*
*/
public class TestStudent {
public static void main(String[] args){
String studentName = "shendanlai";
StudentService service = new StudentService();
service.findStudentByName(studentName);
}
}
测试结果
在eclipse中整体的布局