在我们开发的过程中使用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标签包含所需要的字段名