s2dao特点:
1.s2dao通过Java source code建立O/R mapping;而不是像常见的O/R mapping framework那样利用xml。
2.可以定义sql command文件,并可以在sql plus中执行这个sql command文件;s2dao可以读取这个sql command 文件;
应用:
适用s2dao必须要创建下列文件:
(1)javabeans:对应数据库中table的映射,一般情况下我们可以称他为dto;
(2)Dao(*.java)
(3)sql文件
(4)dicon文件
说明:
Table: EMP
Column Name | Type | NotNull | Primary Key |
---|---|---|---|
EMPNO | NUMBER | yes | yes |
ENAME | VARCHAR | ||
DEPTNUM | NUMBER |
Table: DEPT
Column Name | Type | NotNull | Primary Key |
---|---|---|---|
DEPTNO | NUMBER | yes | yes |
DNAME | VARCHAR |
(一)javabean(dto)说明
1.我们可以以如下方式定义dto
表的声明:
public static final String TABLE = "table name";
例如:
public static final String TABLE = "EMP";
列的声明:
public static final String Property name_COLUMN = "column name";
例如:
public static final String employeeNO_COLUMN = "EMPNO";
其中:EMPNO 对应表emp的empno字段名称;employeeNO是在dto中声明的一个property并存在相应的get(),set()方法,如: private String employeeNO;
3.建立表间关系
必须要声明RELNO 和 RELKEYS
public static final int Property name_RELNO = value;
public static final String Property name_RELKEYS = "外键:主键";
4.自动生成ID,利用DBMS中的sequence
public static final String id_ID = "identity";
例如:
public static final String id_ID = "sequence, sequenceName=myseq";
(二)dao说明
dao被定义成一个interface;一般情况下dao和前面说到得javabean(dto)是一对一的对应关系;
同时dao中的一个方法,对应一个相应的sql文件;
对应javabean的方式:
public static final Class BEAN = JavaBeans name.class;
例如:
public static final Class BEAN = Employee.class;
其中Employee为对应javabean(dto)的名称
ARGS 声明:
public static final String method name_ARGS = " argument name";
argument name对应table中的column;如果有多个列的话,用,分割;
对应sql命令文件的方式:
(三)sql命令文件
sql命令文件的命名规则:dao名称_dao中方法名称.sql;
例如: EmployeeDao_getAllEmployees.sql
同时sql命令文件也可以直接在sql plus中进行调试;
(四)dicon
dicon的作用是将dao注册成container中的一个component;同时也可以注册aop;
例如:
<components></components>
- <components>
- <component class="example.dao.EmployeeDao">
- <aspect>dao.interceptoraspect>
- component>
- components>
其中
<component class="example.dao.EmployeeDao" name="employee">
- <component class="example.dao.EmployeeDao">
</component>
就相当于
EmployeeDao employee = new EmployeeDao();