hsweb 按照功能分模块, 再将controller,service,dao分为子模块.例如: 模块名称为 hsweb-system-menu 创建maven项目模块以及子模块如下:
模块:hsweb-system-menu-entity
hsweb中的entity都为接口并提供了一个默认实现,例如 MenuEntity=>SimpleMenuEntity.但是并不强制使用此方式创建entity
约定:
Entity
接口GenericEntity<PK>
接口EntityFactory
创建而不是newTreeSortSupportEntity<PK>
注: PK
=主键
创建一个entity.
xml
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-entity</artifactId>
<version>${hsweb.version}</version>
</dependency>
import org.hswebframework.web.commons.entity.GenericEntity; import org.hswebframework.web.commons.entity.RecordCreationEntity;
public interface MenuEntity extends GenericEntity {
String getName();
void setName(String remark);
String getUrl();
void setUrl(String url);
}
3. 新建默认实现类
```java
package org.hswebframework.web.entity.menu;
import org.hswebframework.web.commons.entity.GenericEntity;
import org.hswebframework.web.commons.entity.RecordCreationEntity;
public class SimpleMenuEntity implements MenuEntity {
private String name;
private String url;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
public String getUrl(){
return this.url;
}
public void setUrl(String url){
this.url=url;
}
}
注意: 默认实现类一般和接口在同一个包中,并且名称为Simple开头+接口名称.
因为默认的EntityFactory
按照此约定来创建未指定特殊实现接口实现的实例.详见 MapperEntityFactory
模块:hsweb-system-menu-dao
hsweb 目前提供了mybatis的通用dao实现,支持动态条件.
常用dao接口:
增删改查功能继承 CrudDao
即可.
xml
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-dao-api</artifactId>
<version>${hsweb.version}</version>
</dependency>
创建接口:
```java
package org.hswebframework.web.dao.menu;import org.hswebframework.web.dao.CrudDao; import org.hswebframework.web.entity.menu.MenuEntity;
public interface MenuDao extends CrudDao { }
1. mybatis实现.
进入模块: hsweb-system-menu-dao-mybatis引入依赖
```xml
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-dao-mybatis</artifactId>
<version>${hsweb.version}</version>
</dependency>
hsweb依然使用xml的方式实现dao,xml建议放到resources目录下如: 'resources/org/hswebframework/web/dao/mybatis/mappers/menu'
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.hswebframework.web.dao.menu.MenuDao">
<resultMap id="MenuResultMap" type="org.hswebframework.web.entity.menu.SimpleMenuEntity">
<id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
<result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
<result property="url" column="url" javaType="String" jdbcType="VARCHAR"/>
</resultMap>
<!--用于动态生成sql所需的配置-->
<sql id="config">
<bind name="resultMapId" value="'MenuResultMap'"/>
<bind name="tableName" value="'s_menu'"/>
</sql>
<insert id="insert" parameterType="org.hswebframework.web.commons.entity.Entity">
<include refid="config"/>
<include refid="BasicMapper.buildInsertSql"/>
</insert>
<delete id="deleteByPk" parameterType="String">
delete from s_menu where u_id =#{id}
</delete>
<delete id="delete" parameterType="org.hswebframework.web.commons.entity.Entity">
<include refid="config"/>
<include refid="BasicMapper.buildDeleteSql"/>
</delete>
<update id="update" parameterType="org.hswebframework.web.commons.entity.Entity">
<include refid="config"/>
<include refid="BasicMapper.buildUpdateSql"/>
</update>
<select id="query" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="MenuResultMap">
<include refid="config"/>
<include refid="BasicMapper.buildSelectSql"/>
</select>
<select id="count" parameterType="org.hswebframework.web.commons.entity.Entity" resultType="int">
<include refid="config"/>
<include refid="BasicMapper.buildTotalSql"/>
</select>
</mapper>
注意: 目前动态条件参数仅支持: QueryParamEntity
,UpdateParamEntity
,DeleteParamEntity
模块: hsweb-system-menu-service 通用service 提供dsl方式的删改查
TODO