MyBatis映射标签resultMap与resultType、parameterMap与 parameterType

MyBatis映射标签

<?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.dvms.dao.UserDao">
....
</mapper>

在这里插入图片描述

<?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.dvms.dao.UserDao">
<!--注册/新增用户-->
    <insert id="save" parameterType="User">
        insert into user (id,username,password,sex,phone,email,role) values (#{id},#{username},#{password},#{sex},#{phone},#{email},#{role})
    </insert>
<!--登录验证-->
    <select id="login" resultType="User">
        select id,username,password,sex,phone,email,role from user
        where username =#{username} and password =#{password}
    </select>
<!--查询所有用户-->
    <select id="findAlluser" resultType="User">
        select id,username,password,sex,phone,email,role from user
    </select>
<!--删除用户-->
    <delete id="delete" parameterType="String">
        delete from user where id=#{id}
    </delete>
<!--修改用户信息-->
    <!--查到要修改的用户信息-->
    <select id="update" parameterType="String" resultType="User">
        select id,username,password,sex,phone,email,role from user where id=#{id}
    </select>
    <!--修改用户信息-->
    <update id="add" parameterType="User">
        update user set username=#{username},password=#{password},sex=#{sex},phone=#{phone},email=#{email},role=#{role} where id=#{id}
    </update>

</mapper>

在MyBatis中,输入与输出都是相对于数据库而言,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方法的参数类型一致),通过resultType完成输出映射(从数据库中输出,通过dao层的方法查询到的数据输出到pojo对象(实体类entity)中)。

1. 输入映射(往数据库输入)

parameterMap(不常用)与 parameterType(常用)

ParameterMap和resultMap类似,表示将查询结果集中列值的类型一一映射到java对象属性的类型上,在开发过程中不推荐这种方式。
一般使用parameterType直接将查询结果列值类型自动对应到java对象属性类型上,不再配置映射关系一一对应。


2. 输出映射(从数据库输出)

resultMap与resultType(常用)

两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象。
resultMap表示将查询结果集中的列一一映射到bean对象的各个属性。映射的查询结果集中的列标签可以根据需要灵活变化,并且,在映射关系中,还可以通过typeHandler设置实现查询结果值的类型转换,比如布尔型与0/1的类型转换。


#{}和${}的使用

resultMap和ParameterMap书写拼写要使用#{},resultType 和parameterType类型使用${},(一般是用**#{}**)使用例子如下:

Select ID,COMMAND from Message where COMMAND=#{command}

Select ID,COMMAND from Message where COMMAND=‘${command}’

前者解析为:

        Select ID,COMMAND from Message where COMMAND=?具有预编译效果

后者解析为:

        Select ID,COMMAND from Message where COMMAND=段子   不具有预编译效果

在Mybatis中传递多个参数要做参数的绑定(@Param)
在这里插入图片描述
不写parameterType也可以运行,因为Mybatis能自动识别,但返回值类型不能不写!!
Mybatis自动识别入参对象, 传入单个map或单个对象,无需写@Param注解 如@Param(“map”) Map<String, Object> map
那么什么时候必须在mapper接口上写@Param注解呢, mapper接口中有多个参数(每个对象或参数都要加@Param注解), 或一个 String, 必须使用@Param注解,
END

猜你喜欢

转载自blog.csdn.net/cjw12581/article/details/107434177