<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。