1.需求分析:
实现登陆并利用dtree实现显示菜单。其中,ssh框架的搭建,请参考博客(http://blog.csdn.net/vinsuan1993/article/details/68953986)。:
2.项目代码结构:
3.对于实体类的代码这里就不作过多的赘述,这里是通过MyEclipse从数据库反向生成实体类和xml文件(http://blog.csdn.net/qq_26222859/article/details/50521979,可以参考这份博客)。
userInfo.xml代码:
<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="entity.Userinfo" table="USERINFO"schema="HNTESTCRM">
<id name="id" type="java.lang.Short">
<column name="ID" precision="3"scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_USERINFO</param>
</generator>
</id>
<!-- lazy="false" 立即检索-->
<!-- 修改了fetch="join" -->
<many-to-one name="roleinfo"class="entity.Roleinfo" fetch="join"lazy="false">
<column name="ROLEID" precision="1"scale="0" not-null="true" />
</many-to-one>
<property name="username"type="java.lang.String">
<column name="USERNAME" length="20"not-null="true" />
</property>
<property name="userpwd" type="java.lang.String">
<column name="USERPWD" length="200"not-null="true" />
</property>
<property name="userflag"type="java.lang.Boolean">
<column name="USERFLAG" precision="1"scale="0" not-null="true" />
</property>
</class>
</hibernate-mapping>
RoleInfo.xml代码:
<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="entity.Roleinfo" table="ROLEINFO"schema="HNTESTCRM">
<id name="id" type="java.lang.Boolean">
<column name="ID" precision="1"scale="0" />
<generatorclass="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20"not-null="true" />
</property>
<property name="roledesc"type="java.lang.String">
<column name="ROLEDESC"length="100" />
</property>
<property name="roleflag"type="java.lang.Boolean">
<column name="ROLEFLAG" precision="1"scale="0" not-null="true" />
</property>
<set name="userinfos" inverse="true">
<key>
<columnname="ROLEID" precision="1" scale="0"not-null="true" />
</key>
<one-to-many class="entity.Userinfo" />
</set>
<!-- lazy="false" 立即检索-->
<!-- 修改了fetch="join" -->
<set name="rightinfos" table="ROLETORIGHT"schema="HNTESTCRM" lazy="false" fetch="join"sort="util.RightInfoIdComparator">
<key>
<columnname="ROLEID" precision="1" scale="0"not-null="true" />
</key>
<many-to-many entity-name="entity.Rightinfo">
<columnname="RIGHTID" precision="3" scale="0"not-null="true" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
为了生成一条sql语句查询语句fetch="join",因为将其他xml代码没有修改之处略去。
4.Dao层实现类IUserInfoDAOImpl.java,
注意:1.内部类无法读取函数参数,但可以读取成员变量;
2.为了能读取userinfo,加上final;
3.对于一些复杂的查询,使用hibernate的回调函数HibernateCallback();
import java.sql.