日系框架之seasar2(S2DAO)
来源:互联网 发布:linux的两大就业方向 编辑:程序博客网 时间:2024/03/29 09:58
官方网站:http://s2dao.seasar.org/ja/
以下演示代码来源于官网,仅作少量修改。
使用版本Seasar2.4.29+s2-dao1.0.48。
使用的Jar包一览如下:
aopalliance-1.0.jar
commons-logging-1.1.jar
geronimo-j2ee_1.4_spec-1.0.jar
hsqldb-1.8.0.1.jar
javassist-3.4.ga.jar
junit-3.8.2.jar
log4j-1.2.13.jar
ognl-2.6.9-patch-20070908.jar
poi-3.0-FINAL.jar
s2-dao-1.0.48.jar
s2-dao-tiger-1.0.48.jar
s2-extension-2.4.29.jar
s2-framework-2.4.29.jar
s2-tiger-2.4.29.jar
geronimo-jta_1.1_spec-1.0.jar
步骤如下:
启动HSQLDB,并运行如下SQL:
- create table department (id integer generated by default as identity, name varchar(255) not null,version integer not null)
- create table address (id integer generated by default as identity, name varchar(255) not null, version integer not null)
- create table employee (id integer generated by default as identity,name varchar(255) not null,job_type integer not null,salary integer,department_id integer,address_id integer,version integer not null,constraint fk_department FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENT(ID),constraint fk_address FOREIGN KEY(ADDRESS_ID) REFERENCES ADDRESS(ID))
- INSERT INTO DEPARTMENT VALUES(1,'ACCOUNTING',1)
- INSERT INTO DEPARTMENT VALUES(2,'RESEARCH',1)
- INSERT INTO DEPARTMENT VALUES(3,'SALES',1)
- INSERT INTO DEPARTMENT VALUES(4,'OPERATIONS',1)
- INSERT INTO ADDRESS VALUES(1,'STREET 1',1)
- INSERT INTO ADDRESS VALUES(2,'STREET 2',1)
- INSERT INTO ADDRESS VALUES(3,'STREET 3',1)
- INSERT INTO ADDRESS VALUES(4,'STREET 4',1)
- INSERT INTO ADDRESS VALUES(5,'STREET 5',1)
- INSERT INTO ADDRESS VALUES(6,'STREET 6',1)
- INSERT INTO ADDRESS VALUES(7,'STREET 7',1)
- INSERT INTO ADDRESS VALUES(8,'STREET 8',1)
- INSERT INTO ADDRESS VALUES(9,'STREET 9',1)
- INSERT INTO ADDRESS VALUES(10,'STREET 10',1)
- INSERT INTO ADDRESS VALUES(11,'STREET 11',1)
- INSERT INTO ADDRESS VALUES(12,'STREET 12',1)
- INSERT INTO ADDRESS VALUES(13,'STREET 13',1)
- INSERT INTO ADDRESS VALUES(14,'STREET 14',1)
- INSERT INTO EMPLOYEE VALUES(1,'ALLEN',1,1600,3,1,1)
- INSERT INTO EMPLOYEE VALUES(2,'WARD',1,1250,3,2,1)
- INSERT INTO EMPLOYEE VALUES(3,'JONES',2,2975,2,3,1)
- INSERT INTO EMPLOYEE VALUES(4,'MARTIN',1,1250,3,4,1)
- INSERT INTO EMPLOYEE VALUES(5,'BLAKE',2,2850,3,5,1)
- INSERT INTO EMPLOYEE VALUES(6,'CLARK',2,2450,1,6,1)
- INSERT INTO EMPLOYEE VALUES(7,'SCOTT',3,3000,2,7,1)
- INSERT INTO EMPLOYEE VALUES(8,'KING',4,5000,1,8,1)
- INSERT INTO EMPLOYEE VALUES(9,'TURNER',1,1500,3,9,1)
- INSERT INTO EMPLOYEE VALUES(10,'ADAMS',0,1100,2,10,1)
- INSERT INTO EMPLOYEE VALUES(11,'JAMES',0,950,3,11,1)
- INSERT INTO EMPLOYEE VALUES(12,'FORD',3,3000,2,12,1)
- INSERT INTO EMPLOYEE VALUES(13,'MILLER',0,1300,1,13,1)
- INSERT INTO EMPLOYEE VALUES(14,'SMITH',0,800,2,14,1)
app.dicon
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <include path="examples/dicon/EmployeeDao.dicon"/>
- <include path="examples/dicon/Employee2Dao.dicon"/>
- <include path="examples/dicon/EmployeeAutoDao.dicon"/>
- <include path="examples/dicon/DepartmentDao.dicon"/>
- <include path="examples/dicon/DepartmentManager.dicon"/>
- </components>
jdbc.dicon
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components21.dtd">
- <components namespace="jdbc">
- <include path="jta.dicon"/>
- <component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
- <component class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
- <component name="xaDataSource" class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "org.hsqldb.jdbcDriver"
- </property>
- <property name="URL">
- "jdbc:hsqldb:hsql://localhost:9001"
- </property>
- <property name="user">"sa"</property>
- <property name="password">""</property>
- </component>
- <component name="connectionPool" class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
- <property name="timeout">600</property>
- <property name="maxPoolSize">10</property>
- <property name="allowLocalTx">true</property>
- <destroyMethod name="close"/>
- </component>
- <component name="DataSource" class="org.seasar.extension.dbcp.impl.DataSourceImpl" />
- </components>
customized.dicon
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components21.dtd">
- <components namespace="dao">
- <include path="jdbc.dicon"/>
- <component
- class="org.seasar.dao.impl.AnnotationReaderFactoryImpl"/>
- <component
- class="org.seasar.dao.impl.DaoMetaDataFactoryImpl">
- <property name="sqlFileEncoding">"MS932"</property>
- </component>
- <component
- name="interceptor"
- class="org.seasar.dao.pager.PagerS2DaoInterceptorWrapper">
- <arg>
- <component class="org.seasar.dao.interceptors.S2DaoInterceptor"/>
- </arg>
- </component>
- <component
- class="org.seasar.dao.impl.ValueTypeFactoryImpl"/>
- <component class="org.seasar.dao.impl.BeanMetaDataFactoryImpl"/>
- <component class="org.seasar.dao.impl.DaoNamingConventionImpl">
- <property name="insertPrefixes">new String[]{"generate"}</property>
- <property name="deletePrefixes">new String[]{"destory"}</property>
- <property name="updatePrefixes">new String[]{"change"}</property>
- </component>
- <component class="org.seasar.dao.impl.BeanEnhancerImpl"/>
- <component class="org.seasar.dao.impl.ResultSetHandlerFactoryImpl"/>
- <component class="org.seasar.dao.impl.DtoMetaDataFactoryImpl"/>
- <component class="org.seasar.dao.impl.PropertyTypeFactoryBuilderImpl"/>
- <component class="org.seasar.dao.impl.RelationPropertyTypeFactoryBuilderImpl"/>
- <component class="org.seasar.dao.impl.DefaultTableNaming"/>
- <component class="org.seasar.dao.impl.DefaultColumnNaming"/>
- <component class="org.seasar.dao.impl.ProcedureMetaDataFactoryImpl"/>
- </components>
log4j.properties
- log4j.category.org.seasar=DEBUG, C
- log4j.additivity.org.seasar=false
- log4j.category.tutorial.chura=DEBUG, C
- log4j.additivity.tutorial.chura=false
- log4j.appender.C=org.apache.log4j.ConsoleAppender
- log4j.appender.C.Target=System.out
- log4j.appender.C.ImmediateFlush=true
- log4j.appender.C.layout=org.apache.log4j.PatternLayout
- log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n
- log4j.rootLogger=INFO, A1
- log4j.appender.A1=org.apache.log4j.ConsoleAppender
- log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
DepartmentDao.dicon
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components.dtd">
- <components>
- <include path="dao.dicon"/>
- <component class="examples.dao.DepartmentDao">
- <aspect>dao.interceptor</aspect>
- </component>
- </components>
DepartmentManager.dicon
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components.dtd">
- <components>
- <include path="customized.dicon"/>
- <component class="examples.dao.DepartmentManager">
- <aspect>dao.interceptor</aspect>
- </component>
- </components>
Employee2Dao.dicon
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components.dtd">
- <components>
- <include path="dao.dicon"/>
- <component class="examples.dao.Employee2DaoImpl">
- <aspect>dao.interceptor</aspect>
- </component>
- </components>
EmployeeAutoDao.dicon
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components.dtd">
- <components>
- <include path="dao.dicon"/>
- <component class="examples.dao.EmployeeAutoDao">
- <aspect>dao.interceptor</aspect>
- </component>
- </components>
EmployeeDao.dicon
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components.dtd">
- <components>
- <include path="dao.dicon"/>
- <component class="examples.dao.EmployeeDao">
- <aspect>dao.interceptor</aspect>
- </component>
- </components>
DepartmentDao.java
- package examples.dao;
- import org.seasar.dao.annotation.tiger.S2Dao;
- import examples.entity.Department;
- @S2Dao(bean = Department.class)
- public interface DepartmentDao {
- // public Class<Department> BEAN = Department.class;
- public void insert(Department department);
- public void update(Department department);
- public void delete(Department department);
- }
DepartmentManager.java
- package examples.dao;
- import examples.entity.Department;
- public interface DepartmentManager {
- public Class<Department> BEAN = Department.class;
- public void generate(Department department);
- public void change(Department department);
- public void destory(Department department);
- }
Employee2Dao.java
- package examples.dao;
- import java.util.List;
- import examples.entity.Employee;
- public interface Employee2Dao {
- public List<?> getEmployees(String ename);
- public Employee getEmployee(int empno);
- }
Employee2DaoImpl.java
- package examples.dao;
- import java.util.List;
- import org.seasar.dao.DaoMetaDataFactory;
- import org.seasar.dao.impl.AbstractDao;
- import examples.entity.Employee;
- public abstract class Employee2DaoImpl extends AbstractDao implements Employee2Dao {
- public static Class<Employee> BEAN = Employee.class;
- public Employee2DaoImpl(DaoMetaDataFactory daoMetaDataFactory) {
- super(daoMetaDataFactory);
- }
- public static String getEmployee_ARGS = "empno";
- public List<?> getEmployees(String ename) {
- return getEntityManager().find("ename LIKE ?", "%" + ename + "%");
- }
- }
EmployeeAutoDao.java
- package examples.dao;
- import java.util.List;
- import examples.entity.Employee;
- import examples.entity.EmployeeSearchCondition;
- public interface EmployeeAutoDao {
- public Class<Employee> BEAN = Employee.class;
- public List<?> getAllEmployees();
- public String getEmployeeByJobDeptno_ARGS = "job, deptno";
- public List<?> getEmployeeByJobDeptno(String job, Integer deptno);
- public String getEmployeeByEmpno_ARGS = "empno";
- public Employee getEmployeeByEmpno(int empno);
- public String getEmployeesBySal_QUERY = "sal BETWEEN ? AND ? ORDER BY empno";
- public List<?> getEmployeesBySal(float minSal, float maxSal);
- public String getEmployeeByDname_ARGS = "dname_0";
- public List<?> getEmployeeByDname(String dname);
- public List<?> getEmployeesBySearchCondition(EmployeeSearchCondition dto);
- public void update(Employee employee);
- }
EmployeeDao.java
- package examples.dao;
- import java.util.List;
- import examples.entity.Employee;
- import examples.entity.EmployeeSearchCondition;
- public interface EmployeeDao {
- public Class<Employee> BEAN = Employee.class;
- public List<Employee> getAllEmployees();
- public List<Employee> getEmps(EmployeeSearchCondition dto);
- public String getEmployee_ARGS = "empno";
- public Employee getEmployee(int empno);
- public int getCount();
- public String getEmployeeByJobDeptno_ARGS = "job, deptno";
- public List<Employee> getEmployeeByJobDeptno(String job, Integer deptno);
- public String getEmployeeByDeptno_ARGS = "deptno";
- public String getEmployeeByDeptno_QUERY = "/*IF deptno != null*/deptno = /*deptno*/123/n"
- + "-- ELSE 1=1/n" + "/*END*/";
- public List<Employee> getEmployeeByDeptno(Integer deptno);
- public int update(Employee employee);
- public String getAllEmployeeNumbers_SQL = "SELECT empno FROM emp";
- public int[] getAllEmployeeNumbers();
- }
EmployeeDao_getAllEmployees.sql
- SELECT emp.*, dept.dname dname_0, dept.loc loc_0 FROM emp, dept
- WHERE emp.deptno = dept.deptno ORDER BY emp.empno
EmployeeDao_getCount.sql
- SELECT count(*) FROM emp
EmployeeDao_getEmployee.sql
- SELECT emp.*, dept.dname dname_0, dept.loc loc_0 FROM emp, dept
- WHERE empno = /*empno*/7788 AND emp.deptno = dept.deptno
EmployeeDao_getEmployeeByJobDeptno.sql
- SELECT * FROM emp
- /*BEGIN*/WHERE
- /*IF job != null*/job = /*job*/'CLERK'/*END*/
- /*IF deptno != null*/AND deptno = /*deptno*/20/*END*/
- /*END*/
EmployeeDao_getEmps.sql
- SELECT * FROM emp
- /*BEGIN*/
- WHERE /*IF dto.job != "789"*/job = /*dto.job*/'CLERK'/*END*/
- /*END*/
EmployeeDao_update.sql
- UPDATE emp SET ename = /*employee.ename*/'SCOTT'
- WHERE empno = /*employee.empno*/7788
Department.java
- package examples.entity;
- import java.io.Serializable;
- import org.seasar.dao.annotation.tiger.Bean;
- @Bean(table = "DEPT")
- public class Department implements Serializable {
- private static final long serialVersionUID = -4062585060532498627L;
- // public static final String TABLE = "DEPT";
- private int deptno;
- private String dname;
- private String loc;
- private int versionNo;
- public Department() {
- }
- public int getDeptno() {
- return this.deptno;
- }
- public void setDeptno(int deptno) {
- this.deptno = deptno;
- }
- public java.lang.String getDname() {
- return this.dname;
- }
- public void setDname(java.lang.String dname) {
- this.dname = dname;
- }
- public java.lang.String getLoc() {
- return this.loc;
- }
- public void setLoc(java.lang.String loc) {
- this.loc = loc;
- }
- public int getVersionNo() {
- return this.versionNo;
- }
- public void setVersionNo(int versionNo) {
- this.versionNo = versionNo;
- }
- public boolean equals(Object other) {
- if (!(other instanceof Department))
- return false;
- Department castOther = (Department) other;
- return this.getDeptno() == castOther.getDeptno();
- }
- public String toString() {
- StringBuffer buf = new StringBuffer();
- buf.append(deptno).append(", ");
- buf.append(dname).append(", ");
- buf.append(loc).append(", ");
- buf.append(versionNo);
- return buf.toString();
- }
- public int hashCode() {
- return this.getDeptno();
- }
- }
Employee.java
- package examples.entity;
- import java.io.Serializable;
- import java.sql.Timestamp;
- public class Employee implements Serializable {
- private static final long serialVersionUID = -5960260125251941419L;
- public static final String TABLE = "EMP";
- public static final int department_RELNO = 0;
- public static final String timestamp_COLUMN = "tstamp";
- private long empno;
- private String ename;
- private String job;
- private Short mgr;
- private java.util.Date hiredate;
- private Float sal;
- private Float comm;
- private int deptno;
- private Timestamp timestamp;
- private Department department;
- public Employee() {
- }
- public Employee(long empno) {
- this.empno = empno;
- }
- public long getEmpno() {
- return this.empno;
- }
- public void setEmpno(long empno) {
- this.empno = empno;
- }
- public java.lang.String getEname() {
- return this.ename;
- }
- public void setEname(java.lang.String ename) {
- this.ename = ename;
- }
- public java.lang.String getJob() {
- return this.job;
- }
- public void setJob(java.lang.String job) {
- this.job = job;
- }
- public Short getMgr() {
- return this.mgr;
- }
- public void setMgr(Short mgr) {
- this.mgr = mgr;
- }
- public java.util.Date getHiredate() {
- return this.hiredate;
- }
- public void setHiredate(java.util.Date hiredate) {
- this.hiredate = hiredate;
- }
- public Float getSal() {
- return this.sal;
- }
- public void setSal(Float sal) {
- this.sal = sal;
- }
- public Float getComm() {
- return this.comm;
- }
- public void setComm(Float comm) {
- this.comm = comm;
- }
- public int getDeptno() {
- return this.deptno;
- }
- public void setDeptno(int deptno) {
- this.deptno = deptno;
- }
- public Timestamp getTimestamp() {
- return this.timestamp;
- }
- public void setTimestamp(Timestamp timestamp) {
- this.timestamp = timestamp;
- }
- public Department getDepartment() {
- return this.department;
- }
- public void setDepartment(Department department) {
- this.department = department;
- }
- public boolean equals(Object other) {
- if (!(other instanceof Employee))
- return false;
- Employee castOther = (Employee) other;
- return this.getEmpno() == castOther.getEmpno();
- }
- public String toString() {
- StringBuffer buf = new StringBuffer();
- buf.append(empno).append(", ");
- buf.append(ename).append(", ");
- buf.append(job).append(", ");
- buf.append(mgr).append(", ");
- buf.append(hiredate).append(", ");
- buf.append(sal).append(", ");
- buf.append(comm).append(", ");
- buf.append(deptno).append(", ");
- buf.append(timestamp).append(" {");
- buf.append(department).append("}");
- return buf.toString();
- }
- public int hashCode() {
- return (int) this.getEmpno();
- }
- }
- package examples.entity;
- public class EmployeeSearchCondition {
- public static final String dname_COLUMN = "dname_0";
- private String job;
- private String dname;
- public String getDname() {
- return dname;
- }
- public void setDname(String dname) {
- this.dname = dname;
- }
- public String getJob() {
- return job;
- }
- public void setJob(String job) {
- this.job = job;
- }
- }
测试代码:
DepartmentDaoClient.java
- package examples.work;
- import org.seasar.framework.container.S2Container;
- import org.seasar.framework.container.factory.S2ContainerFactory;
- import examples.dao.DepartmentDao;
- import examples.entity.Department;
- public class DepartmentDaoClient {
- private static final String PATH = "app.dicon";
- public static void main(String[] args) {
- S2Container container = S2ContainerFactory.create(PATH);
- container.init();
- try {
- DepartmentDao dao = (DepartmentDao) container.getComponent(DepartmentDao.class);
- Department dept = new Department();
- dept.setDeptno(99);
- dept.setDname("foo");
- dao.insert(dept);
- dept.setDname("bar");
- System.out.println("before update versionNo:" + dept.getVersionNo());
- dao.update(dept);
- System.out.println("after update versionNo:" + dept.getVersionNo());
- dao.delete(dept);
- } finally {
- container.destroy();
- }
- }
- }
DepartmentManagerClient.java
- package examples.work;
- import org.seasar.framework.container.S2Container;
- import org.seasar.framework.container.factory.S2ContainerFactory;
- import examples.dao.DepartmentManager;
- import examples.entity.Department;
- public class DepartmentManagerClient {
- private static final String PATH = "app.dicon";
- public static void main(String[] args) {
- S2Container container = S2ContainerFactory.create(PATH);
- container.init();
- try {
- DepartmentManager dao = (DepartmentManager) container.getComponent(DepartmentManager.class);
- Department dept = new Department();
- dept.setDeptno(99);
- dept.setDname("foo");
- dao.generate(dept);
- dept.setDname("bar");
- System.out.println("before update versionNo:" + dept.getVersionNo());
- dao.change(dept);
- System.out.println("after update versionNo:" + dept.getVersionNo());
- dao.destory(dept);
- } finally {
- container.destroy();
- }
- }
- }
Employee2DaoClient.java
- package examples.work;
- import java.util.List;
- import org.seasar.framework.container.S2Container;
- import org.seasar.framework.container.factory.S2ContainerFactory;
- import examples.dao.Employee2Dao;
- import examples.entity.Employee;
- public class Employee2DaoClient {
- private static final String PATH = "app.dicon";
- public static void main(String[] args) {
- S2Container container = S2ContainerFactory.create(PATH);
- container.init();
- try {
- Employee2Dao dao = (Employee2Dao) container.getComponent(Employee2Dao.class);
- List<?> employees = dao.getEmployees("CO");
- for (int i = 0; i < employees.size(); ++i) {
- System.out.println(employees.get(i));
- }
- Employee employee = dao.getEmployee(7788);
- System.out.println(employee);
- } finally {
- container.destroy();
- }
- }
- }
EmployeeAutoDaoClient.java
- package examples.work;
- import java.util.List;
- import org.seasar.framework.container.S2Container;
- import org.seasar.framework.container.factory.S2ContainerFactory;
- import examples.dao.EmployeeAutoDao;
- import examples.entity.Employee;
- import examples.entity.EmployeeSearchCondition;
- public class EmployeeAutoDaoClient {
- private static final String PATH = "app.dicon";
- public static void main(String[] args) {
- S2Container container = S2ContainerFactory.create(PATH);
- container.init();
- try {
- EmployeeAutoDao dao = (EmployeeAutoDao) container.getComponent(EmployeeAutoDao.class);
- dao.getEmployeeByJobDeptno(null, null);
- dao.getEmployeeByJobDeptno("CLERK", null);
- dao.getEmployeeByJobDeptno(null, new Integer(20));
- dao.getEmployeeByJobDeptno("CLERK", new Integer(20));
- List<?> employees = dao.getEmployeesBySal(0, 1000);
- for (int i = 0; i < employees.size(); ++i) {
- System.out.println(employees.get(i));
- }
- employees = dao.getEmployeeByDname("SALES");
- for (int i = 0; i < employees.size(); ++i) {
- System.out.println(employees.get(i));
- }
- EmployeeSearchCondition dto = new EmployeeSearchCondition();
- dto.setDname("RESEARCH");
- employees = dao.getEmployeesBySearchCondition(dto);
- for (int i = 0; i < employees.size(); ++i) {
- System.out.println(employees.get(i));
- }
- Employee employee = dao.getEmployeeByEmpno(7788);
- System.out.println("before timestamp:" + employee.getTimestamp());
- dao.update(employee);
- System.out.println("after timestamp:" + employee.getTimestamp());
- } finally {
- container.destroy();
- }
- }
- }
- package examples.work;
- import java.util.List;
- import org.seasar.framework.container.S2Container;
- import org.seasar.framework.container.factory.S2ContainerFactory;
- import examples.dao.EmployeeDao;
- import examples.entity.Employee;
- public class EmployeeDaoClient {
- private static final String PATH = "app.dicon";
- public static void main(String[] args) {
- S2Container container = S2ContainerFactory.create(PATH);
- container.init();
- try {
- EmployeeDao dao = (EmployeeDao) container.getComponent(EmployeeDao.class);
- List<Employee> employees = dao.getAllEmployees();
- for (int i = 0; i < employees.size(); ++i) {
- System.out.println(employees.get(i));
- }
- Employee employee = dao.getEmployee(7788);
- System.out.println(employee);
- int count = dao.getCount();
- System.out.println("count:" + count);
- dao.getEmployeeByJobDeptno(null, null);
- dao.getEmployeeByJobDeptno("CLERK", null);
- dao.getEmployeeByJobDeptno(null, new Integer(20));
- dao.getEmployeeByJobDeptno("CLERK", new Integer(20));
- dao.getEmployeeByDeptno(new Integer(20));
- dao.getEmployeeByDeptno(null);
- System.out.println("updatedRows:" + dao.update(employee));
- int[] numbers = dao.getAllEmployeeNumbers();
- for (int i = 0; i < numbers.length; i++) {
- System.out.println(numbers[i]);
- }
- } finally {
- container.destroy();
- }
- }
- }
- 日系框架之seasar2(S2DAO)
- 日系框架之seasar2(S2JDBC)
- 日系框架之seasar2(S2Hibernate3)
- SeaSar2之struts2+ seasar2 + s2dao框架整合-yellowcong
- 日系框架之seasar2(S2JPA之Hibernate3)
- 日系框架之seasar2(S2JPA之TopLink)
- 日系框架之seasar2(S2JPA之OpenJPA)
- 日系框架之seasar2(S2JDBC) -----使用HSQLDB
- 日系框架之seasar2(S2JSF)
- 日系框架之seasar2(SAStruts)
- 日系框架之seasar2(S2Struts)
- 日系框架之Seasar2之SQL注释大坑-yellowcong
- SeaSar2之S2Dao入门案例-yellowcong
- 日系框架之seasar2(Teeda:S2JSF的孪生兄弟)
- 日系框架之seasar2(Teeda支援HTML模板)
- 日系框架之seasar2(SAStruts)升级篇
- 开源框架 Seasar2
- 开源框架 Seasar2
- Struts bean 标签介绍
- 一步一步SharePoint 2007之六:改变一个网站的导航栏
- Struts Logic 标签介绍
- 信号量和临界区
- 记算出一个字符串在另一个字符串中出现的次数
- 日系框架之seasar2(S2DAO)
- 谈谈 Oracle 甲骨文-研讨会!
- ce车载娱乐系统和车载驾驶安全系统
- struts的几本书
- symbian解析XML学习之路(二)
- 服务器端的测试利器--Cactus简介
- c#中的委托和事件
- 方法重新和虚方法
- 用vim实现C++代码的自动补全功能