目录
MyBatis高级查询
标签中
入参:
int 可以忽略parameterType
String 可以忽略parameterType
HashMap
Person
List
多参 不写parameterType
返回值:
int
Person
List
ResultMap标签
如果数据库结果集中的列名和要封装的javaBean的属性名有不一致的情况下,我们查询的结果中不一致的属性值会为null,这个时候我们可以使用 resultMap 标签手动的建立映射关系,可以很好的解决数据不对应的问题。
PersonMapper.xml
<!--类中的属性名和表中的字段名一样时 可以使用resultMap
类中的属性名和表中的字段名不一样时 不使用resultType 使用resultMap
可以只配置不相同的字段名
-->
<!--手动映射对象-->
<resultMap id="personResultMap" type="person">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="bir" property="bir"></result>
<result column="address" property="address"></result>
</resultMap>
<!--查询所有 resultMap-->
<select id="findAllResultMap" resultMap="personResultMap">
select id as id, name, bir, address from person
</select>
MyBatis多参数处理
MyBatis 方法中出现了多个参数的处理方式:
第一种
select * from person where pname = #{0} and address = #{1}
是否生效与jdk版本有关
第二种 使用方法索引
select * from person where pname = #{param1} and address = #{param2}
不加注解的情况下 会报错:
Parameter ‘pname’ not found. Available parameters are [1, 0, param1, param2]
Parameter ‘pname’ not found. Available parameters are [1, 0, arg0, arg1]
Parameter ‘pname’ not found. Available parameters are [mm1,mm2]
第三种 使用注解
抽象方法定义 使用Param注解
List<Person> selectPersonByNameAndAddress(@Param("pname") String pname, @Param("address") String address);
select * from person where pname = #{pname} and address = #{address}
第四种 使用Map
<!--
解决多参问题 方式四:
对于多参类型》》我们推出了一款新产品: