MyBatis Mapper 文件书写自定义查询标签

在我们开发的过程中使用generator逆向工程生成我们所连接数据库的表格对应的entity、criteria、mapper接口以及mapper.xml可以省去很多不必要的操作,也避免了可能出现的书写错误,

现在我分析一下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">

<?xml version> 声明文件的版本和编码格式

<!DOCTYPE> 标签是指Document Type Definetion文档规则定义标签,PUBLIC定义这个dtd在版本库里的唯一key,根据key寻找对应mapper.dtd,在eclipse等工具里都可以自己制定dtd位置,但是key不能变

<mapper namespace="com.xinqiuboche.provider_back_stage_mixture_management_web.mapper.MapCoordinateTypeMapper">

<mapper> 标签是mapper文件的框架标签,所有的子标签均是写到mapper标签中进行书写,namaspace 属性值为mapper接口或者dao接口的包名路径xx.xxx.xxx.mapper.java

<resultMap>标签在mapper配置文件中可以存在多个,用来对应sql查询到的表字段与实体类的属性字段,表示返回值不唯一,该标签的属性字段id是唯一的在该配置文件中,type为每条记录对应的实体类的包名路径,resultMap标签内部需要对表字段和实体类进行对应,这是一种方式,
<resultMap id="BaseResultMap" type="com.xinqiuboche.provider_back_stage_mixture_management_web.entity.MapCoordinateType">
    <id column="id" jdbcType="VARCHAR" property="id" />
    <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
    <result column="MODIFY_TIME" jdbcType="TIMESTAMP" property="modifyTime" />
</resultMap>
  <select id="selectByMapBaseId" resultMap="MapDataModelMap">
    select a.id,  a.serial_number , b.coordinate_type ,b.coordinate_status ,
         a.coordinate_x , a.coordinate_y , a.width, a.height,  a.rota 
    from map_details a
    left join map_coordinate_type b on a.id = b.map_details_id
    where a.map_base_id = ${mapBaseId}  and a.DELETE_FLAG = -1
  </select>

还有一种方式是直接select 的时候进行对应,如select CREATE_TIME as createTime from xxx 这时候就不需要内部写这么多result标签了,仅需要写resultMap标签定义id属性,type属性指定要接收数据的实体类(可以为自定义model) 

<resultMap id="MapDataModelMap" type="com.xinqiuboche.provider_back_stage_mixture_management_web.model.mapdetails.MapDataModel">
  </resultMap>
  <select id="selectByMapBaseId" resultMap="MapDataModelMap">
    select a.id as id,  a.serial_number as serialNumber, b.coordinate_type as type,b.coordinate_status as status, a.coordinate_x as x, a.coordinate_y as y , 
a.width as width, a.height as height,  a.rota as rota
    from map_details a
    left join map_coordinate_type b on a.id = b.map_details_id
    where a.map_base_id = ${mapBaseId}  and a.DELETE_FLAG = -1
  </select>

 <sql>标签中的内容一般作为sql直接拼接在sql中,所以要符合sql语法

 现在我们也会有一些需求,我们需要查的数据没自动生成的Base_Column_List那么多,只需要其中一部分,那就可以自定义写一个sql标签包含所需要的字段名

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页