目录
一个domain类,需要的其他代码文件:
创建的8个文件
- DAO接口
- DAO实现类
- 映射文件
- Service接口
- Service 实现类
- Action类
- list.jsp
- input.jsp
添加的3个bean
- dao的bean
- service的bean
- action的bean
共需要11个模版
模版中的数据
假设传递的domain类为 com.lwf.domain.Employee
${className?uncap_first} //表示employee
${basePackage} //表示com.lwf
${className} //表示Employee
<#list propNames as prop> //表示类中的属性名的集合的遍历
1.映射文件(hbm.ftl)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="${basePackage}.domain">
<class name="${className}">
<id name="id" >
<generator class="native"/>
</id>
<#list propNames as prop>
<property name="${prop}"/>
</#list>
</class>
</hibernate-mapping>
2.dao接口(IDAO.ftl)
package com.lwf.dao;
import com.lwf.domain.${className};
public interface I${className}DAO extends IgenericDAO<${className}>{
}
3.dao实现类(DAOImpl.ftl)
package com.lwf.dao.impl;
import com.lwf.dao.I${className}DAO;
import com.lwf.domain.${className};
public class ${className}DAOImpl extends GenericDAOImpl<${className}> implements I${className}DAO{
public ${className}DAOImpl() {
super();
}
}
4.service接口(IService.ftl)
package ${basePackage}.service;
import java.util.List;
import ${basePackage}.domain.${className};
import com.lwf.query.IQuery;
import com.lwf.query.Page;
public interface I${className}Service {
void save(${className} o);
void update(${className} o);
void delete(${className} o);
${className} get(Long id);
List<${className}> list();
Page<List<${className}>> list(IQuery q);
}
5.service实现类(ServiceImpl.ftl)
package ${basePackage}.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import ${basePackage}.dao.I${className}DAO;
import ${basePackage}.domain.${className};
import ${basePackage}.service.I${className}Service;
import ${basePackage}.query.IQuery;
import ${basePackage}.query.Page;
public class ${className}ServiceImpl implements I${className}Service{
@Autowired
private I${className}DAO dao;
public void save(${className} e) {
dao.save(e);
}
public ${className} get(Long id) {
return dao.get(id);
}
public void update(${className} e) {
dao.update(e);
}
public void delete(${className} o) {
dao.delete(o);
}
public List<${className}> list() {
return dao.list();
}
public Page<List<${className}>> list(IQuery q){
return dao.getPage(q);
}
}
6.action类(Action.ftl)
package ${basePackage}.action;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import ${basePackage}.domain.${className};
import ${basePackage}.service.I${className}Service;
import ${basePackage}.util.RequiredPermission;
import ${basePackage}.query.Page;
import ${basePackage}.query.QueryObject;
public class ${className}Action extends BaseAction {
private static final long serialVersionUID = 1L;
@Autowired
private I${className}Service ${className?uncap_first}Service;
//注入查询对象
private QueryObject query=new QueryObject();
public QueryObject getQuery() {
return query;
}
public void setQuery(QueryObject query) {
this.query = query;
}
//注入domain类的对象
${className} ${className?uncap_first}=new ${className}();
public ${className} get${className}() {
return ${className?uncap_first};
}
public void set${className}(${className} ${className?uncap_first}) {
this.${className?uncap_first} = ${className?uncap_first};
}
@RequiredPermission("查看${className}列表")
public String execute() throws Exception {
Page<List<${className}>> page = ${className?uncap_first}Service.list(query);
super.putContext("page", page);
return super.LIST;
}
@RequiredPermission("修改/增加${className}")
public String save() {
if(${className?uncap_first}.getId()!=null) {
${className?uncap_first}Service.update(${className?uncap_first});
this.addActionMessage("修改成功");
}else {
${className?uncap_first}Service.save(${className?uncap_first});
this.addActionMessage("保存成功");
}
return SUCCESS;
}
@RequiredPermission("编辑${className}")
public String input() {
if (${className?uncap_first}.getId() != null) {
${className?uncap_first} = this.${className?uncap_first}Service.get(${className?uncap_first}.getId());
}
return INPUT;
}
//保存前填充不可编辑的属性
public void prepareSave() {
if(${className?uncap_first}.getId()!=null) {
${className?uncap_first}=${className?uncap_first}Service.get(${className?uncap_first}.getId());
//有外键的属性置空
}
//集合属性清空
}
@RequiredPermission("删除单个${className}")
public String delete() {
if(${className?uncap_first}.getId()!=null) {
this.${className?uncap_first}Service.delete(${className?uncap_first});
this.addActionMessage("删除成功");
}
return SUCCESS;
}
}
7.input.jsp(input.ftl)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:debug/>
<s:form action="${className?uncap_first}_save">
<s:hidden name="${className?uncap_first}.id"/>
<table>
<#list propNames as prop>
<tr>
<td>${prop}</td>
<td><s:textfield name="${className?uncap_first}.${prop}"/></td>
</tr>
</#list>
<tr>
<td><s:reset value="重置"/></td>
<td><s:submit value="doit"/></td>
</tr>
</table>
</s:form>
8.list.jsp(list.ftl)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>部门列表</title>
</head>
<%@include file="../../view/common/common_menu.jsp" %>
<s:debug/>
<s:form id="searchForm" action="${className?uncap_first}" method="post">
<s:hidden id="pageSize" name="query.pageSize"/>
<s:hidden id="currentPage" name="query.currentPage"/>
</s:form>
<div align="center"><s:a action="${className?uncap_first}_input">添加</s:a></div><br/>
<table width="80%" align="center" border="9">
<tr align="center">
<th>编号</th>
<#list propNames as prop>
<th>${prop}</th>
</#list>
<th>操作</th>
</tr>
<s:iterator value="#page.list" var="u">
<tr align="center">
<td><s:property value="#u.id"/></td>
<#list propNames as prop>
<td><s:property value="#u.${prop}"/></td>
</#list>
<td>
<s:a action="${className?uncap_first}_delete"><s:param name="${className?uncap_first}.id" value="#u.id"/>删除</s:a>
<s:a action="${className?uncap_first}_input"><s:param name="${className?uncap_first}.id" value="#u.id"/>编辑</s:a>
</td>
</tr>
</s:iterator>
</table>
<%@include file="../../view/common/common_page.jsp" %>
</body>
</html>
9.dao的bean标签(daoxml.ftl)
<bean id="${className?uncap_first}DAO" class="${basePackage}.dao.impl.${className}DAOImpl"></bean>
10.service的bean标签(servicexml.ftl)
<bean id="${className?uncap_first}Service" class="${basePackage}.service.impl.${className}ServiceImpl"></bean>
11.action的bean标签(actionxml.ftl)
<bean id="${className?uncap_first}Action" class="${basePackage}.action.${className}Action" scope="prototype"></bean>