在下列命名过程中user统一改为userm,应为user在很多地方都是关键字
例如 Userm.java
UsermDAO.java
2. 建立user.hbm.xml的映射文件
之后应该把user.hbm.xml注册到hibernate-config.xml文件中
在clmis系统的数据库中有定义 一个用户表 c_userM, 其中user_id 是根据oracle自动编号的,对应的序列为 c_userm_sn,
可以通过 select c_userm_sn.nextval from dual 查询出序列值
请大家写一个用户管理的程序,包含用户的新增,修改,查询,删除的功能,
查询条件为(可以模糊查询)
用户名:———— 姓名:—————— 查询
程序的书写步骤为
第一阶段
1. 创建javaBean userm
2. 建立userm.hbm.xml的映射文件
把userm.hbm.xml注册到hibernate-config.xml文件中
3. 建立UsermDAO 接口(由于 新增 修改 删除 的方法都有继承,所以只需要写一个 findUserByNameAndNo(String userName,String userNo))
4. 建立UsermDAOImpl 实现类, 实现 UsermDAO
5. 建立UsermService,基本代码和UsermDAO一样
6. 建立UsermServiceImpl,实现UsermService
7. 在erpit-base-dao.xml中注册usermDAO
8. 在erpit-base-service.xml中注册 usermService
(完成此步就可以用junit测试操作数据库,学会单元测试,并测试成功后再写下面步骤)
后阶段
9. 填写jsp页面
10. 填写controller程序
11. erpit-base-view.xml中注册controller
12. 运行测试
注:
在java代码中变量命名除 static final 变量中可以使用 中划线或下划线 -, 其他变量我们一般不会采用划线
例如:数据库中 USER_NAME 我们一般对应为 private String userName;
我们可以定义常量就采用 public static final String SYS_CMIS_LOCKRMK = 'Y';
由于userId是采用oracle序列自动编号,所以在hbm.xml中配置时要自动应用 C_userm_sn付值
由于采用了hibernate做底层,很多方法都提取出来公共使用,所以我们把所有的table的主key,对应的javaBean中的字段都统一为id,也就是c_userm表中user_id,就应该对应 user bean中的id字段,由于id是继承下来的,所以在user.java bean中是不用定义private Long id的
在oracle数据中的date类型,在java中是用 java.sql.Timestamp类型接收的,在hbm.xml中是用 timestamp对应的
下面有个例子
public class Userm extends BaseEntity<Long> {
private String user_no;
private String user_nm;
private String user_pwd;
private String per_no;
private String used_rmk;
private EmailBean email;
public User(){}
public User(Long id){
this.id = id;
}
public String getUser_no() {
return user_no;
}
public void setUser_no(String user_no) {
this.user_no = user_no;
}
public String getUser_nm() {
return user_nm;
}
public void setUser_nm(String user_nm) {
this.user_nm = user_nm;
}
public String getUser_pwd() {
return user_pwd;
}
public void setUser_pwd(String user_pwd) {
this.user_pwd = user_pwd;
}
public String getPer_no() {
return per_no;
}
public void setPer_no(String per_no) {
this.per_no = per_no;
}
@Override
public boolean equalsIfIdNull(Object o) {
// TODO Auto-generated method stub
return false;
}
@Override
public int hashCodeIfIdNull() {
// TODO Auto-generated method stub
return 0;
}
public EmailBean getEmail() {
return email;
}
public void setEmail(EmailBean email) {
this.email = email;
}
public String getUsed_rmk() {
return used_rmk;
}
public void setUsed_rmk(String used_rmk) {
this.used_rmk = used_rmk;
}
}
hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.g512.app.base.model.admin">
<class name="User" table="WUSERS">
<id name="id" column="USER_ID" type="long">
<generator class="sequence">
<param name="sequence">WUSERS_SN</param>
</generator>
</id>
<property name="user_no" column="USER_NO" type="string" />
<property name="user_nm" column="USER_NM" type="string" />
<property name="user_pwd" column="USER_PWD" type="string" />
<property name="used_rmk" column="USED_RMK" type="string" />
<property name="per_no" column="PER_NO" type="string" length="6" />
</class>
</hibernate-mapping>
1.从ie中输入url,例如 index.htm
2.springmvc 会根据web.xml中配置,一切.htm都要采用springmvc的转向,所以会根据spring的转向配置文件dispatcher-servlet.xml
3.从dispatcher-servlet.xml文件中可以看到,index.htm是执行indexController的,但再执行indexController之前,我们要先执行logonValidatorController,这个也是配置,例如login.htm我们就没有要求他执行logonValidatorController,logonValidatorController是个过滤器,他的作用是判断是否有登录,所以程序就转到logonValidatorController中,因为没有登录,所以就转向了login.jsp了
logonValidatorController的代码在base/filter/filter.xml中配置的,从logonValidatorController配置代码中可以看到为什么会转向login.jsp也是配置的。
4.当我们输入用户名和密码后,我们从login.jsp中可以看到,程序是提交到了login.htm?method=loginCheck,表示执行login.htm中的loginCheck的方法,这又回到了第二步了,他又会根据dispatcher-servlet.xml,login.htm又会执行loginController,loginController对应到什么java文件?我们要从mvc文件夹中的配置xml文件了,因为controller将来会很多,所以我就对他分类管理,loginController是基本,所以我放在base/mvc/eip-base-mvc.xml中,我们可以看到他执行的是com.byd.erpit.base.controller.admin.LoginController.java,但是他有用到数据库查询,所以要用到service,service是要调用dao的,所以大家可以根据service和dao的配置查询到具体调用的代码。
例如 Userm.java
UsermDAO.java
2. 建立user.hbm.xml的映射文件
之后应该把user.hbm.xml注册到hibernate-config.xml文件中
在clmis系统的数据库中有定义 一个用户表 c_userM, 其中user_id 是根据oracle自动编号的,对应的序列为 c_userm_sn,
可以通过 select c_userm_sn.nextval from dual 查询出序列值
请大家写一个用户管理的程序,包含用户的新增,修改,查询,删除的功能,
查询条件为(可以模糊查询)
用户名:———— 姓名:—————— 查询
程序的书写步骤为
第一阶段
1. 创建javaBean userm
2. 建立userm.hbm.xml的映射文件
把userm.hbm.xml注册到hibernate-config.xml文件中
3. 建立UsermDAO 接口(由于 新增 修改 删除 的方法都有继承,所以只需要写一个 findUserByNameAndNo(String userName,String userNo))
4. 建立UsermDAOImpl 实现类, 实现 UsermDAO
5. 建立UsermService,基本代码和UsermDAO一样
6. 建立UsermServiceImpl,实现UsermService
7. 在erpit-base-dao.xml中注册usermDAO
8. 在erpit-base-service.xml中注册 usermService
(完成此步就可以用junit测试操作数据库,学会单元测试,并测试成功后再写下面步骤)
后阶段
9. 填写jsp页面
10. 填写controller程序
11. erpit-base-view.xml中注册controller
12. 运行测试
注:
在java代码中变量命名除 static final 变量中可以使用 中划线或下划线 -, 其他变量我们一般不会采用划线
例如:数据库中 USER_NAME 我们一般对应为 private String userName;
我们可以定义常量就采用 public static final String SYS_CMIS_LOCKRMK = 'Y';
由于userId是采用oracle序列自动编号,所以在hbm.xml中配置时要自动应用 C_userm_sn付值
由于采用了hibernate做底层,很多方法都提取出来公共使用,所以我们把所有的table的主key,对应的javaBean中的字段都统一为id,也就是c_userm表中user_id,就应该对应 user bean中的id字段,由于id是继承下来的,所以在user.java bean中是不用定义private Long id的
在oracle数据中的date类型,在java中是用 java.sql.Timestamp类型接收的,在hbm.xml中是用 timestamp对应的
下面有个例子
public class Userm extends BaseEntity<Long> {
private String user_no;
private String user_nm;
private String user_pwd;
private String per_no;
private String used_rmk;
private EmailBean email;
public User(){}
public User(Long id){
this.id = id;
}
public String getUser_no() {
return user_no;
}
public void setUser_no(String user_no) {
this.user_no = user_no;
}
public String getUser_nm() {
return user_nm;
}
public void setUser_nm(String user_nm) {
this.user_nm = user_nm;
}
public String getUser_pwd() {
return user_pwd;
}
public void setUser_pwd(String user_pwd) {
this.user_pwd = user_pwd;
}
public String getPer_no() {
return per_no;
}
public void setPer_no(String per_no) {
this.per_no = per_no;
}
@Override
public boolean equalsIfIdNull(Object o) {
// TODO Auto-generated method stub
return false;
}
@Override
public int hashCodeIfIdNull() {
// TODO Auto-generated method stub
return 0;
}
public EmailBean getEmail() {
return email;
}
public void setEmail(EmailBean email) {
this.email = email;
}
public String getUsed_rmk() {
return used_rmk;
}
public void setUsed_rmk(String used_rmk) {
this.used_rmk = used_rmk;
}
}
hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.g512.app.base.model.admin">
<class name="User" table="WUSERS">
<id name="id" column="USER_ID" type="long">
<generator class="sequence">
<param name="sequence">WUSERS_SN</param>
</generator>
</id>
<property name="user_no" column="USER_NO" type="string" />
<property name="user_nm" column="USER_NM" type="string" />
<property name="user_pwd" column="USER_PWD" type="string" />
<property name="used_rmk" column="USED_RMK" type="string" />
<property name="per_no" column="PER_NO" type="string" length="6" />
</class>
</hibernate-mapping>
1.从ie中输入url,例如 index.htm
2.springmvc 会根据web.xml中配置,一切.htm都要采用springmvc的转向,所以会根据spring的转向配置文件dispatcher-servlet.xml
3.从dispatcher-servlet.xml文件中可以看到,index.htm是执行indexController的,但再执行indexController之前,我们要先执行logonValidatorController,这个也是配置,例如login.htm我们就没有要求他执行logonValidatorController,logonValidatorController是个过滤器,他的作用是判断是否有登录,所以程序就转到logonValidatorController中,因为没有登录,所以就转向了login.jsp了
logonValidatorController的代码在base/filter/filter.xml中配置的,从logonValidatorController配置代码中可以看到为什么会转向login.jsp也是配置的。
4.当我们输入用户名和密码后,我们从login.jsp中可以看到,程序是提交到了login.htm?method=loginCheck,表示执行login.htm中的loginCheck的方法,这又回到了第二步了,他又会根据dispatcher-servlet.xml,login.htm又会执行loginController,loginController对应到什么java文件?我们要从mvc文件夹中的配置xml文件了,因为controller将来会很多,所以我就对他分类管理,loginController是基本,所以我放在base/mvc/eip-base-mvc.xml中,我们可以看到他执行的是com.byd.erpit.base.controller.admin.LoginController.java,但是他有用到数据库查询,所以要用到service,service是要调用dao的,所以大家可以根据service和dao的配置查询到具体调用的代码。