发表于: 2018-04-07 20:39:44
1 689
今日完成:
1.名词解释
初级DAO模式:
例如::写一个类 操作1张表 针对这张表的所有操作都以方法的形式写在这个类中 1个操作对应1个方法要求是外部通过调用这个类的方法达到操作某张表的目的时不需要写任何和数据库以及JDBC相关的代码,这个类的命名就是XXDAO
比如表叫做 t_goods 商品表那么操作它的DAO就叫GoodsDAO
高级DAO模式:
例如:即DAO工厂模式,多个XXDAO实现同一个接口或者继承同一个基类,编写一个工厂类通过工厂模式(简单工厂模式或利用反射动态加载均可)获得接口或基类对象,内部实际上封装返回的是具体的XXDAO类的对象。简单的说即是在1的基础上将创建具体的XXDAO对象的方式由new变为工厂模式实现
2.TASK17
1.业务表格类型
2.声明数据传输对象(VoDemo.class)
package com.jnshu.stinformationdao;
public class StIformationVo {
private int id;
private String name;
private int age;
private int academic_muber;
private String household_register ;
private String remark;
public int getId(){
return id;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int getAcademic_muber(){
return academic_muber;
}
public String getHousehold_register(){
return household_register;
}
public String getRemark(){
return remark;
}
}
3.定义接口DAO层
package com.jnshu.stinformationdao;
import java.sql.SQLException;
//导入前面的字段声明,为什么不把字段声明和接口类放在一起?
public interface InterfaceDAO {
public void add(StIformationVo stif); //定义增删查改接口,不太确定对不对?
public void delete(StIformationVo stif);
public void select(StIformationVo stif) throws SQLException;
}
4.实例层
package com.jnshu.stinformationdao;
import com.sun.media.jfxmedia.locator.Locator;
import java.sql.*;
public class ImplementsDAO implements InterfaceDAO {
//定义数据库的连接对象
private PreparedStatement pstmt = null; //定义数据库操作对象
private Connection conn = null;
public ImplementsDAO(Connection conn){ // 构造方法,设置数据库连接
this.conn = conn;
}
public void add(StIformationVo stif) {
try {
String sql = "insert into school_db values (?,?,?,?,?,?) ";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, StIformationVo.getId());
this.pstmt.setString(2, StIformationVo.getName());
this.pstmt.setInt(3, StIformationVo.getAge());
this.pstmt.setInt(4, StIformationVo.getAcademic_muber());
this.pstmt.setInt(5, StIformationVo.getHousehold_register());
this.pstmt.setString(6, StIformationVo.getRemark());
this.pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void delete(StIformationVo stif) {
try {
String sql = "DELETE FROM school_db WHERE id=? ";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, StIformationVo.getId());
this.pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void select(StIformationVo stif) throws SQLException {
String sql = " select name,age from school_db where id=?";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, StIformationVo.getId());
this.pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import一般都是导入不在同一个包下(也就是两个java文件不在同一个文件夹下)
你如果两个文件在同一个文件夹下 在一个java文件中调用另一个java文件中的类中的方法 直接 实例化 (也就是 new一个就行了 )
比如 你的 test包下 有两个java文件 一个 try1, 一个 try2,try2类下又有try2_1方法 也就是 try2_1(),你想在try1中调用 try2_1(i)方法 你只要在 try1中写入 try2 t=new try2(); t.try2_1(i);就ok了
如果在不同包内(不同文件夹下)就需要import了 比如 try2在另一个 package2包中
在try1中要用try2的方法就要在try1开头写入
import package2.try2
明日计划:复习类和对象,链接mybatis,理解DAO层作用
遇到困难:对象之间方法、数值调用逻辑理解不清。(待解决)
收获:DAO层实现的基本方法
评论