1. 程式人生 > >spring+springMVC+Mybatis+dwz 開發

spring+springMVC+Mybatis+dwz 開發

一、資料結構設計:

測試使用者表:test_user

欄位名

型別

長度

允許為空

預設值

描述

id

varchar

50

主鍵UUID

name

varchar

30

姓名

qq

varchar

30

QQ號

email

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

serialVersionUID= 1L;

   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=