spring+springMVC+Mybatis+dwz 開發
一、資料結構設計:
測試使用者表:test_user |
|||||
欄位名 |
型別 |
長度 |
允許為空 |
預設值 |
描述 |
id |
varchar |
50 |
否 |
主鍵UUID |
|
name |
varchar |
30 |
否 |
姓名 |
|
|
varchar |
30 |
QQ號 |
||
|
varchar |
30 |
郵箱地址 |
||
phone |
varchar |
15 |
聯絡方式 |
||
createUser |
varchar |
30 |
建立人id |
||
createDate |
datetime |
建立日期 |
|||
updateUser |
varchar |
30 |
更新人id |
||
updateDate |
datetime |
更新日期 |
|||
deleteFlag |
bit |
1 |
否 |
1 |
0刪除、1未刪除 |
二、程式碼設計
2.1、JavaBean程式碼
package com.xt.web.bean;
import org.apache.commons.lang.builder.ToStringBuilder;
import com.dwz.framework.support.bean.BaseBean;
/**
* 使用者表對應的javabean
* @authormengxin 2015/06/17
*/
public classTestUser extendsBaseBean {
private
static final
long
privateStringname;
privateStringqq;
privateStringemail;
privateStringphone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getEmail() {
return email;
}
public void setEmail(String email){
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone){
this.phone = phone;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
2.2、Controller程式碼
package com.xintu.manager.web.bean.controller;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.dwz.framework.support.controller.BasePageController;
import com.dwz.framework.support.page.PagerForm;
import com.xintu.manager.web.bean.TestUser;
import com.xintu.manager.web.bean.service.ITestUserService;
/**
* 使用者表對應的controller
* @authormengxin 2015/06/17
*
*/
@Controller
@RequestMapping("/testUser")
public classTestUserController extends BasePageController<TestUser, String> {
private static Logger logger = Logger.getLogger(TestUserController.class);
private ITestUserServicetestUserService;
@Autowired
publicTestUserController(ITestUserService testUserService) {
super(testUserService);
this.testUserService =testUserService;
}
/**
* 新增儲存資料
* 返回頁面時給出提示成功或失敗資訊
*/
@RequestMapping("/add")
@Override
public ModelAndView toAdd(@ModelAttribute TestUserinstance, HttpServletRequest request) {
//初始化baseBean資訊
super.initCreateBaseBean(instance,null);
logger.info(instance.toString());
ModelAndViewmodelAndView = super.ajaxDoneError(getMessage("msg.operation.failure"));
//將instance中非null的屬性儲存到資料庫中,返回1表求成功,返回0表示失敗
int ret =this.testUserService.addColumnsNotNull(instance);
if(ret==1){
modelAndView= ajaxDoneSuccess(getMessage("msg.operation.success"));
}else{
logger.error("toAdd error !!!!");
}
return modelAndView;
}
/**
* 編輯儲存資料
* 返回頁面時給出提示成功或失敗資訊
*/
@RequestMapping("/edit")
@Override
public ModelAndViewtoEdit(TestUser instance, HttpServletRequest request) {
super.initUpdateBaseBean(instance,null);
logger.info(instance.toString());
ModelAndViewmodelAndView = ajaxDoneError(getMessage("msg.operation.failure"));
//將instance中非null的屬性更新到資料庫中,返回1表求成功,返回0表示失敗
int ret =this.testUserService.updateColumnsNotNull(instance);
if(ret==1){
modelAndView= ajaxDoneSuccess(getMessage("msg.operation.success"));
}else{
logger.error("toEdit error !!!! ret : "+ret);
}
return modelAndView;
}
/**
* 進入新增頁面
*/
@RequestMapping("/toAddPage")
@Override
public StringgotoAddPage(Model model) {
return "TestUser/add";
}
/**
* 進入編輯頁面
*/
@RequestMapping("/toEditPage")
@Override
public String gotoEditPage(@RequestParam(value="id") String id,Model model) {
logger.info("id = "+id);
TestUserinstance = this.testUserService.get(id);
model.addAttribute("instance",instance);
return "TestUser/edit";
}
/**
* 進入預覽頁面
*/
@RequestMapping("/toViewPage")
@Override
public String gotoViewPage(@RequestParam(value="id") String id,Model model) {
logger.info("id = "+id);
TestUserinstance = this.testUserService.get(id);
model.addAttribute("instance",instance);
return "TestUser/view";
}
/**
* 進入列表展示頁面
*/
@RequestMapping("/toListPage")
@Override
public String toListPage(@ModelAttribute PagerFormpagerForm,
HttpServletRequestrequest,
@RequestParam(required=false, defaultValue="", value="conditions")String conditions,
Modelmodel) {
//如果返回頁面內容較複雜,可以參照initListPageModel自己實現
super.initListPageModel(this.testUserService, pagerForm,request, conditions,false, model);
return "TestUser/list";
}
/**
* 查詢顯示回收站內的列表資料
*/
@RequestMapping("/toGCListPage")
@Override
public String toGCListPage(@ModelAttribute PagerFormpagerForm,
HttpServletRequestrequest,
@RequestParam(required=false, defaultValue="", value="conditions")String conditions,
Modelmodel) {
//如果返回頁面內容較複雜,可以參照initListPageModel自己實現
super.initListPageModel(this.testUserService, pagerForm,request, conditions,true, model);
return "TestUser/list";
}
}
2.3、IService程式碼
package com.xintu.manager.web.bean.service;
import com.dwz.framework.support.service.IBaseQueryService;
import com.xintu.manager.web.bean.TestUser;
/**
* service介面
* @authormengxin 2015/06/17
*
*/
public interfaceITestUserService extends IBaseQueryService<TestUser, String> {
}
2.4、ServiceImpl程式碼
package com.xintu.manager.web.bean.service.impl;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dwz.framework.support.service.SupportPageInfoServiceDone;
import com.xintu.manager.web.bean.TestUser;
import com.xintu.manager.web.bean.mapper.TestUserMapper;
import com.xintu.manager.web.bean.service.ITestUserService;
/**
* 邏輯實現類
* @authormengxin 2015/06/17
*
*/
@Service("testUserService")
public classTestUserServiceImpl extends SupportPageInfoServiceDone<TestUser, String>implements ITestUserService{
private static Logger logger = Logger.getLogger(TestUserServiceImpl.class);
private TestUserMappertestUserMapper;
@Autowired
publicTestUserServiceImpl(TestUserMapper testUserMapper) {
super(testUserMapper);
this.testUserMapper =testUserMapper;
}
@Override
public int deleteInLogic(Stringid) {
TestUserbean = newTestUser();
bean.setId(id);
bean.setDeleteFlag(0);
logger.info("deleteInLogic id : "+id);
return this.testUserMapper.updateByPrimaryKeySelective(bean);
}
@Override
public int recovery(String id) {
TestUserbean = newTestUser();
bean.setId(id);
bean.setDeleteFlag(1);
logger.info("recovery id : "+id);
return this.testUserMapper.updateByPrimaryKeySelective(bean);
}
}
2.5、Mapper程式碼package com.xintu.manager.web.bean.mapper;
import com.dwz.framework.support.mapper.BaseSupportListMapper;
import com.xintu.manager.web.bean.TestUser;
/**
* 使用者mapper類
* @authormengxin 2015/06/17
*
*/
public interfaceTestUserMapper extends BaseSupportListMapper<TestUser, String> {
}
2.6、mapping XML配置,可以用mybatis-generator-core-1.3.2.jar來自動生成
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.xintu.manager.web.bean.mapper.TestUserMapper">
<resultMapid="BaseResultMap"type="com.xintu.manager.web.bean.TestUser">
<idcolumn="id"property="id"jdbcType="VARCHAR"/>
<resultcolumn="name"property="name"jdbcType="VARCHAR"/>
<resultcolumn="qq"property="qq"jdbcType="VARCHAR"/>
<resultcolumn="email"property="email"jdbcType="VARCHAR"/>
<resultcolumn="phone"property="phone"jdbcType="VARCHAR"/>
<resultcolumn="createUser"property="createUser"jdbcType="VARCHAR"/>
<resultcolumn="createDate"property="createDate"jdbcType="TIMESTAMP"/>
<resultcolumn="updateUser"property="updateUser"jdbcType="VARCHAR"/>
<resultcolumn="updateDate"property="updateDate"jdbcType="TIMESTAMP"/>
<resultcolumn="deleteFlag"property="deleteFlag"jdbcType="INTEGER"/>
</resultMap>
<sqlid="Base_Column_List">
id, name, qq, email, phone, createUser, createDate, updateUser,updateDate, deleteFlag
</sql>
<selectid="selectByPrimaryKey"resultMap="BaseResultMap"parameterType="java.lang.String">
select
<includerefid="Base_Column_List"/>
from test_user
where id = #{id,jdbcType=VARCHAR}
</select>
<deleteid="deleteByPrimaryKey"parameterType="java.lang.String">
delete from test_user
where id = #{id,jdbcType=VARCHAR}
</delete>
<insertid="insert"parameterType="com.xintu.manager.web.bean.TestUser">
insert into test_user (id, name, qq,
email, phone, createUser,
createDate, updateUser, updateDate,
deleteFlag)
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{qq,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR},#{createUser,jdbcType=VARCHAR},
#{createDate,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR},#{updateDate,jdbcType=TIMESTAMP},
#{deleteFlag,jdbcType=INTEGER})
</insert>
<insertid="insertSelective"parameterType="com.xintu.manager.web.bean.TestUser">
insert into test_user
<trimprefix="("suffix=")"suffixOverrides=",">
<iftest="id != null">
id,
</if>
<iftest="name != null">
name,
</if>
<iftest="qq != null">
qq,
</if>
<iftest="email != null">
email,
</if>
<iftest="phone != null">
phone,
</if>
<iftest="createUser != null">
createUser,
</if>
<iftest="createDate != null">
createDate,
</if>
<iftest="updateUser != null">
updateUser,
</if>
<iftest="updateDate != null">
updateDate,
</if>
<iftest="deleteFlag != null">
deleteFlag,
</if>
</trim>
<trimprefix="values ("suffix=")"suffixOverrides=",">
<iftest="id != null">
#{id,jdbcType=VARCHAR},
</if>
<iftest="name != null">
#{name,jdbcType=VARCHAR},
</if>
<iftest="qq != null">
#{qq,jdbcType=VARCHAR},
</if>
<iftest="email != null">
#{email,jdbcType=VARCHAR},
</if>
<iftest="phone != null">
#{phone,jdbcType=VARCHAR},
</if>
<iftest="createUser != null">
#{createUser,jdbcType=VARCHAR},
</if>
<iftest="createDate != null">
#{createDate,jdbcType=TIMESTAMP},
</if>
<iftest="updateUser != null">
#{updateUser,jdbcType=VARCHAR},
</if>
<iftest="updateDate != null">
#{updateDate,jdbcType=TIMESTAMP},
</if>
<iftest="deleteFlag != null">
#{deleteFlag,jdbcType=INTEGER},
</if>
</trim>
</insert>
<updateid="updateByPrimaryKeySelective"parameterType="com.xintu.manager.web.bean.TestUser">
update test_user
<set>
<iftest="name != null">
name = #{name,jdbcType=VARCHAR},
</if>
<iftest="qq != null">
qq = #{qq,jdbcType=VARCHAR},
</if>
<iftest="email != null">
email = #{email,jdbcType=VARCHAR},
</if>
<iftest="phone != null">
phone = #{phone,jdbcType=VARCHAR},
</if>
<iftest="createUser != null">
createUser = #{createUser,jdbcType=VARCHAR},
</if>
<iftest="createDate != null">
createDate =#{createDate,jdbcType=TIMESTAMP},
</if>
<iftest="updateUser != null">
updateUser =#{updateUser,jdbcType=VARCHAR},
</if>
<iftest="updateDate != null">
updateDate =#{updateDate,jdbcType=TIMESTAMP},
</if>
<iftest="deleteFlag != null">
deleteFlag =#{deleteFlag,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<updateid="updateByPrimaryKey"parameterType="com.xintu.manager.web.bean.TestUser">
update test_user
set name = #{name,jdbcType=VARCHAR},
qq = #{qq,jdbcType=VARCHAR},
email = #{email,jdbcType=VARCHAR},
phone = #{phone,jdbcType=VARCHAR},
createUser = #{createUser,jdbcType=VARCHAR},
createDate = #{createDate,jdbcType=TIMESTAMP},
updateUser = #{updateUser,jdbcType=VARCHAR},
updateDate = #{updateDate,jdbcType=TIMESTAMP},
deleteFlag = #{deleteFlag,jdbcType=INTEGER}
where id = #{id,jdbcType=VARCHAR}
</update>
<!-- 批量刪除物理刪除 -->
<deleteid="deleteByPrimaryKeys"parameterType="java.util.List">
deletefrom test_user where id in
<foreachcollection="list"index="index"item="id"open="("
separator=","close=")">
#{id}
</foreach>
</delete>
<!-- 查詢列表資料(部分欄位) -->
<selectid="selectListColumnsByExample"parameterType="java.util.Map"
resultType="java.util.Map">
selectid, name, qq, email, phone, createDate, updateDate, deleteFlag
fromtest_user where 1=1
<trim>
<iftest="deleteFlag !=null">
and deleteFlag =#{deleteFlag}
</if>
<iftest="id != null andid!=''">
and id = #{id}
</if>
<iftest="name != nulland name!=''">
and name likeCONCAT('%','${name}','%')
</if>
<iftest="date_s != nulland date_s!=''">
<![CDATA[
andDATE_FORMAT(updateDate, '%Y-%m-%d') >= DATE_FORMAT(#{date_s}, '%Y-%m-%d')
]]>
</if>
<iftest="date_e != nulland date_e!=''">
<![CDATA[
andDATE_FORMAT(updateDate, '%Y-%m-%d') <= DATE_FORMAT(#{date_e}, '%Y-%m-%d')
]]>
</if>
</trim>
<choose>
<whentest="orderSql != null and orderSql!=''">
orderby ${orderSql}
</when>
<otherwise>
orderby updateDate desc
</otherwise>
</choose>
</select>
</mapper>
2.7、新增頁面:WebRoot/page/TestUser/add.jsp
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<divclass="pageContent">
<!-- (this, navTabAjaxDone) (this,dialogAjaxDone);" -->
<formmethod="post"action="testUser/add.do"class="pageForm required-validate"onsubmit="return validateCallback(this,dialogAjaxDone);">
<inputtype="hidden"name="navTabId"value="page_TestUser"/>
<inputtype=