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

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

    <action name="*">
                <result>/{1}.jsp</result>
    </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<User> 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>
    
    <!-- <insert id="addUser" parameterType="com.mi.entity.User"
        flushCache="true">
        INSERT INTO user_t (id,user_name,password,age) VALUES
        (#{id},#{userName},#{password},#{age})
    </insert>
    
    <delete id="deleteUser" parameterType="com.mi.entity.User" flushCache="true">
        DELETE FROM user_t where id=#{id}
    </delete>
    
    <update id="updateUser" parameterType="com.mi.entity.User" flushCache="true">
        UPDATE user_t SET user_name = 'zzxy' WHERE id=#{id}
    </update> -->
    
</mapper>
原文地址:https://www.cnblogs.com/tingbogiu/p/5856038.html