S2Dao有以下的特征:
1. O/R mapping不用设置xml。
2. 不需要了解JDBC的知识。
3. SQL和java可以分开作业。
4. SQL语句自动生成。
5. 接口和实现分离,即只需要声明接口。
使用S2Dao时必须作成的文件:JavaBeans、Dao(.java)、dicon文件、SQL文件(.sql)。
1. JavaBeans:
1) 声明该JavaBean关联的table
如:public static final String TABLE = “table名”;
2)声明JavaBean属性对应的table的column。
如果property和column一致,可省略,table中没有的列,也不必声明属性对应。
如:public static final String property名_COLUMN = "column名";
3)同其他表的关联关系的声明,如(N:1)
N:1定义在N侧的JavaBean中,需要声明RELNO和RELKEYS。
RELNO属性用来标识检索结果中的字段属于哪个表。
如:public static final int property名_RELNO = 数值;
RELKEYS属性用来指定关联的列。
多个关联之间用,隔开。
1侧的表的列名和N侧的表的列名相同时可省略1侧的表的列名。
1侧的表的列名和N侧的表的列名相同并且1侧的表的列名是主键时,RELKEYS的声明可省略。
如:public static final String property名_RELKEYS = "N侧的表的列名: 1侧的表的列名";
4)ID的自动生成
声明格式:property名_ID = "identity"
如:public static final String id_ID = "identity";
public static final String id_ID = "sequence, sequenceName=myseq";
public static final String id_ID = "assigned";
5)不需要持久化的列
public static final String NO_PERSISTENT_PROPS = "dummy1, dummy2";
排他制御用
如:public static final String VERSION_NO_PROPERTY = "myVersionNo";
排他制御用
如:public static final String TIMESTAMP_PROPERTY = "myTimestamp";
8)表中列对应的java属性的声明
9)8中定义的属性的setter(),getter()的声明
JavaBean例子
表:EMP
列名 | 型 | NotNull | 主键 |
EMPNO | NUMBER | 〇 | 〇 |
ENAME | VARCHAR |
|
|
DEPTNUM | NUMBER |
|
|
表: DEPT
列名 | 型 | NotNull | 主键 |
DEPTNO | NUMBER | 〇 | 〇 |
DNAME | VARCHAR |
|
|
import java.io.Serializable;
public class Employee implements Serializable {
public static final String TABLE = "EMP";
public static final int department_RELNO = 0;
public static final String department_RELKEYS = "DEPTNUM:DEPTNO";
private long empno;
private String ename;
private Short deptnum;
private Department department;
public Employee() {
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
...
}