mapper.xml详解

简介: java简单类型,int,String #{占位符,任意字符}pojo自定义对象 新增 #{pojo的属性名}hashmap

java简单类型,int,String #{占位符,任意字符}

pojo自定义对象 新增 #{pojo的属性名}

hashmap

<!--hashmap用例
  取值方式:#{map的key}
  注意:当使用map中不存在的key取值时,取值为空null。代码不报错  -->
  <select id="selectByMap" parameterType="map" resultType="user">
  SELECT * FROM USER WHERE SEX= #{sex} AND address LIKE 
  concat("%",#{address},"%")
&lt;/select&gt;

多参数的

接口方法定义:

/**多参数用例
  * @param sex
  * @param address
  */
  //public List<User> selectByParams(@Param("sex")String sex,@Param("address")String address);
  public List<User> selectByParams(String sex,String address);

xml实现:

<!--多参数用例
  parameterType可以省略
  (1).@Param:作用,把注解的对象,set放到map中去,key就是注解起的名字
  (2).使用#{index},index从0开始为第几个参数
   -->
  <select id="selectByParams" resultType="user">
  select * from user where sex=#{0} and address like concat("%",#{1},"%")
  </select>

1. resultType

Java简单类型

pojo自定义对象类型

hashmap

2. resultMap

resultType::在指定pojo对象接收 映射的结果集时, 需要要将 pojo对象的属性名 和 数据库表的字段名要一致。

如果有不一致的,则查询的改字段为null

解决名字不一致的方法:

方案一

<!--方案一: 给sql查询的字段as别名,别名和pojo对象的属性名一样  -->
  <select id="selectAll" resultType="car">
  <!-- select * from car -->
  select carId carId, name carName, userId userId from car
  </select>

方案二

<!--
  resultMap:对应自定义的哪个resultMap的id
   -->
  <select id="selectAll" resultMap="CarMap">
  select * from car
  select carId carId, name carName, userId userId from car
  </select>
  <!--
  type:把结果集映射到哪个对象上
  <id/>:结果集的主键唯一标识
  <result/>:结果集的普通字段
  column:表中的字段名
  property:pojo对象的属性名
  column和property:在一起表示实体类和表之间的映射关系
   -->
  <resultMap type="car" id="CarMap">
  <id column="carId" property="carId" />
  <result column="name" property="carName" />
  <result column="userId" property="userId" />
  </resultMap>

如果使用resultMap来处理这种简单的名字不一致的问题的时候,可以在resultMap里只去配置这个名字不一致的字段(或者),名字一致的可以省略掉。


resultMap:除了能够解决上述的名字不一致的问题外,还可以解决复杂的pojo问题

<resultMap type="UserVo" id="UserVoMap">
  <id column="id" property="id"/>
  <result column="username" property="username"/>
  <result column="sex" property="sex"/>
  <result column="birthday" property="birthday"/>
  <result column="address" property="address"/>
  <!-- 一对多 集合   ofType:集合的类型-->
  <collection property="cars" ofType="Car">
    <id column="carId" property="carId"/>
    <result column="name" property="carName"/>
    <result column="userId" property="userId"/>
  </collection>
  </resultMap>

association属性是一对一pojo使用的


目录
相关文章
|
1月前
|
XML 数据格式
|
7月前
|
XML Java 区块链
为什么需要用xml
为什么需要用xml
|
SQL Java 关系型数据库
MyBatis中mapper.xml中foreach的使用
MyBatis中mapper.xml中foreach的使用
264 0
|
XML JSON JavaScript
了解xml
即使在xml被json'替代的今天,你也应该了解它。
139 0
|
XML 存储 数据处理
xml
xml
81 0
|
XML 存储 PHP
XML简单基础详解(I)
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
87 0
XML简单基础详解(I)
|
SQL XML 安全
MyBaits 中的 Mapper.xml 文件详解(中)
MyBatis 的真真强大在于他的映射语句,这是它的魔力所在。由于它的异常强大,映射器的XML文件就显得相对简单。如果拿它跟具有相同功能的JDBC
229 0
|
SQL XML 缓存
MyBaits 中的 Mapper.xml 文件详解(上)
MyBatis 的真真强大在于他的映射语句,这是它的魔力所在。由于它的异常强大,映射器的XML文件就显得相对简单。如果拿它跟具有相同功能的JDBC
487 0
|
SQL XML 缓存
MyBaits 中的 Mapper.xml 文件详解(下)
MyBatis 的真真强大在于他的映射语句,这是它的魔力所在。由于它的异常强大,映射器的XML文件就显得相对简单。如果拿它跟具有相同功能的JDBC
194 0
|
XML JavaScript Java
XML就是这么简单
什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标记语言)–在不同的机器进行通信的数据规范 sgml(标准通用标记语言) html(超文本标记语言) 为什么我们需要...
1245 0