parameterType是必须写的吗?

简介: xml中没有配置parameterType,但是这是正确的,因为mybatis能自动识别,但返回值类型不能不写,因为mybatis需要将获得结果封装到相应的类中,查询的字段与类的属性需要一致。

parameterType是必须写的吗?


一、parameterType详解


   在MyBatis的select、insert、update、delete这些元素中都提到了parameterType这个属性。MyBatis现在可以使用的parameterType有基本数据类型和JAVA复杂数据类型:


① 基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#{参数名} 即可获取传入的值


② 复杂数据类型:包含JAVA实体类、Map。通过#{属性名}或#{map的KeyName}即可获取传入的值


二、parameterType例子


   现在有一个Mapper配置文件,以下是片段:


 <select id="queryCommandListByPage" resultMap="CommandResult" >
      select <include refid="columns"/> from command a left join command_content b 
    on a.id=b.command_id
      <where>
          <if test="command.name != null and !"".equals(command.name.trim())">
            and a.name=#{command.name}
        </if>
        <if test="command.description != null and !"".equals(command.description.trim())">
            and a.description like '%' #{command.description} '%'
        </if>
      </where>
      <if test="flag==1">
        group by aid
    </if>
      order by id
  </select>
  <sql  id="columns">
      a.id aid,a.name,a.description,b.content,b.id,b.command_id
  </sql>


下面是IService接口:


     /**
     * 拦截器实现分页
     */
    public List<command> queryCommandListByPage(Map<String,Object>parameter);


上面的xml中没有配置parameterType,但是这是正确的,因为mybatis能自动识别,但返回值类型不能不写,因为mybatis需要将获得结果封装到相应的类中,查询的字段与类的属性需要一致(不一致的需要显示的配置)。


还有一种情况是参数有多个,数据类型多种,无法确认参数类型。用的是#{index}取值。


以上是鄙人愚见,有不当或补充之处,欢迎指正。

目录
相关文章
|
2月前
|
缓存 移动开发 Linux
Pacman
Pacman
46 3
|
6月前
PAT乙级 1016 部分A+B
PAT乙级 1016 部分A+B
|
7月前
|
SQL 分布式计算 数据库
ApacheHudi使用问题汇总(二)
ApacheHudi使用问题汇总(二)
120 0
PAUSE
PAUSE
111 0
|
SQL Java 数据库连接
JPA
JPA
172 1
|
算法
PAT条条大路通罗马
Indeed there are many different tourist routes from our city to Rome. You are supposed to find your clients the route with the least cost while gaining the most happiness.
126 0
XPATH
学习XPATH。
103 0
|
负载均衡 分布式数据库 数据库
spanner 的前世今生
spanner的前身是big table,让我们先来看看big table这个老子的方方面面,然后再来看看儿子spanner为啥一出世就吸引了全球技术人员的眼球。 2006年,google 发表了big table [1]的文章,为什么要做big table,下面有一个简短的总结[2]: 就
9638 3
|
JavaScript 前端开发