关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)


1.我们都知道在struts2中为防止浏览器绕过struts过滤器直接请求页面,所以我们都会配置一个拦截所有页面的action,如下:

    <action name="*">
                <result>/{1}.jspresult>
    action>

springmvc中同样可以有这种类似配置如下:

package com.mi.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {

    @RequestMapping("/{init}")
    public String go(@PathVariable String init){
        System.out.println(init);
        return init;
    }
}

我的请求路径可以是如下类型,http://localhost:8080/ssm(项目名)/xxx.do   这样会请求到名字为xxx页面的jsp上去,很好用,利用@PathVariable注解,在此记录下

2.关于mybatis中xml文件的sql语句的参数类型处置,当sql参数类型为多种不同的基本类型时,比如 id,name,age,这时参数类型应该是parameterType="int,string,int"实际会报错,这里按照此种写法应该写成

parameterType="java...."全类型写法,但是在此可以不用这么麻烦,代码如下

在dao的接口中定义的sql的方法时:

package com.mi.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.mi.entity.User;

@Repository
public interface UserInfoMapper {
    public List queryUserInfo(@Param("beginIndex") int beginIndex,@Param("pageSize") int pageSize);
}

使用@Param参数注解提供声明参数的功能,同时给出参数类型及参数名,即可解决xml中的参数类型声明问题

<?xml version="1.0" encoding="UTF-8" ?>
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mi.dao.UserInfoMapper">
    
    
    <select id="queryUserInfo" resultType="com.mi.entity.User">
        SELECT id,user_name userName,age FROM user_t where 1=1 limit #{beginIndex},#{pageSize}
    select>
    
    
    
mapper>