MyBatis系列学习---《Mapper.xml 解析 一》

<mapper namespace="com.huarenwenyu.client02.mapper.GradeMapper" >
    <resultMap id="BaseResultMap" type="com.huarenwenyu.client02.entity.Grade" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="remark" property="remark" jdbcType="VARCHAR" />
    </resultMap>
    <select id="findAll" resultType="com.huarenwenyu.client02.entity.Grade">
        select * from grade
    </select>
    <select id="findList" parameterType="Map" resultType="Grade">
        select * from grade where name like #{name} limit #{offset},#{pageSize}
    </select>
    <select id="getTotal" parameterType="Map" resultType="Integer">
        select count(id) from grade where name like #{name}
    </select>
</mapper>

针对以上一段代码(GradeMapper.xml),现在逐条分析

<mapper namespace="com.huarenwenyu.client02.mapper.GradeMapper" >

namespace命名必须与某个接口同名,即与GradeMapper接口对应。按住ctrl,点击GradeMapper可跳转到GradeMapper。

    <select id="findAll" resultType="com.huarenwenyu.client02.entity.Grade">
        select * from grade
    </select>

id = "findAll", findAll 需要与(GradeMapper.java)中findAll方法名一致;

resultType="com.huarenwenyu.client02.entity.Grade" Grade是实体类,对应DB中的表(表名为grade)

    <select id="findList" parameterType="Map" resultType="Grade">
        select * from grade where name like #{name} limit #{offset},#{pageSize}
    </select>

parameterType:输入参数的类型

#{...} 代表一个占位符,会进行类型的自动转换

  • 等同于pstm.setInt("...")   e.g. #{pageSize}
  • 如果传递的是字符串参数,会自动加上''(引号)  e.g. #{name}

备注:

${...} 与#{...}不一样

  • 代表字符串拼接,不会进行类型的自动转换。${}表示拼接sql串,将parameterType传入的内容拼接在sql中,且不进行jbdc类型转换。
  • 只接受简单类型值或pojo属性值

  • 如果parameterType传输单个简单类型值,${}中只能是value。

发布了63 篇原创文章 · 获赞 1 · 访问量 2734

猜你喜欢

转载自blog.csdn.net/A_bad_horse/article/details/104964817