项目_07_Spring_MVC_MyBatis动态SQL

1. Spring MVC

   请求-->DispatcherServlet-->HandlerMapping-->Controller-->模型组件-->响应

- JSP页面刷新(页面跳转)

   响应-->ViewResolver-->JSP页面

- Ajax请求响应(页面不跳转)

 响应-->@ResponseBody(gson.jar)-->将Controller返回结果转成JSON字符串输出

2. RESTFUL

 对URL格式、请求提交方式做了约定。

 - 查询 GET

    页面跳转: 利用浏览器< a href="">或window.location.href=""发请求,走ViewResolver调用JSP处理流程

    页面不跳转:利用Ajax发送请求,返回JSON结果,将JSON解析显示到页面

 - 添加 POST

    页面跳转: 利用浏览器<form action="" method="post">发请求,走ViewResolver调用JSP处理流程

    页面不跳转:利用Ajax发送请求,返回JSON结果,将JSON解析显示到页面

 - 删除 DELETE 

    利用Ajax发送请求,返回JSON结果

 - 更新 PUT

    利用Ajax发送请求,返回JSON结果


3. Controller编写

- 调用JSP页面整体刷新
    
        @Controller
        public class XxxController{
    
            @RequestMapping(value="/请求",method=xxx)
            //接收参数,如果是REST路径中使用@Pathvarible
            //如果是原有提交,使用@RequestParam或不写变量名与参数key保持一致
            public ModelAndView xxx(参数列表){
                //调用模型处理
                //将处理结果和响应JSP封装到ModelAndView返回
            }
    
        } 

    页面显示:在JSP中使用EL或JSTL技术,提取ModelAndView中数据,显示到页面

- Ajax请求,局部处理


        @Controller
        public class XxxController{
    
            @RequestMapping(value="/请求",method=xxx)
            //接收参数,如果是REST路径中使用@Pathvarible
            //如果是原有提交,使用@RequestParam或不写变量名与参数key保持一致
            @ResponseBody
            public 数据对象类型 xxx(参数列表){
                //调用模型处理
                //将处理结果返回
            }
    
        } 

    页面显示:调用Ajax回调函数,将返回JSON结果解析出来,显示到页面


/user/demo/hello
/user/demo/a.css
<link src="a.css"/>

login.jsp

/user/dept
/user/a.css
login.jsp

${pageContext.request.contextPath}/css/xx.css
${pageContext.request.contextPath}/js/xx.js




#MyBatis动态SQL

  作用:动态根据用户提交的请求参数,在XML文件中拼凑出不同的SQL语句

  典型:组合查询、动态更新等

  标签:<if>、<choose>、<foreach>、<where>、<set>等

##组合查询

  需求:可以根据姓名、年龄、生日做条件查询

  姓名:xxxxxxxxxx年龄:xxxxxxxxxx 生日:xxxxxxxxxx 搜索按钮

  排列组合算法:


  
  < where>:a.顶替一个WHERE关键字;b.可以过滤条件前面多余的and或or关键词  
 

        <where>
          and age = #{age}
        </where>
        //等价
        <where>
          age = #{age}
        </where>
  < set>:a.顶替一个SET关键字;b.可以过滤最后多余的逗号  

        <set>
          age = #{age},
        </set>
        //等价
        <set>
          age = #{age}
        </set>

组合查询

     <select id="findAll" parameterType="com.xdl.vo.SearchUser" 
         resultType="com.xdl.entity.User">
         select * from x_user
     <where>
         <if test="name != null">
          name like #{name}
         </if>
         <if test="age>0">
          and age=#{age}
         </if>
         <if test="birth!=null">
          and birth=#{birth}
         </if>
     </where>
         order by id
     </select>


##动态更新

非空值参与update,null值不参与更新

    <update id="update" parameterType="com.xdl.entity.User">
        update x_user
    <set>
        <if test="name != null">
         name=#{name},
        </if>
        <if test="age > 0">
        age=#{age},
        </if>
        <if test="birth != null">
        birth=#{birth}
        </if>
    </set>
        where id=#{id}
    </update>

欢迎转载:海阔天空 » 项目_07_Spring_MVC_MyBatis动态SQL

评论 沙了个发

换个身份

取消评论