Mybatis manual
映射关系
不指定resultMap的默认映射 与SQL 查询出的字段名一致
<select id="queryById" parameterType="long" resultMap="dictionary">
select * from sys_dictionary WHERE id = #{
id}
</select>
当不指定 resultMap="dictionary"时,默认的设施是按照SQL语句的字段名来match。
如果数据库的字段名和 Class Dictionary里面的命名不同,则要指定resultMap="", 否则查询出来的内容为空
public Dictionary queryById(long id);
<id column="id" property="id" javaType="Long"/>
<result column="sys_code" property="code" javaType="String"/>
<result column="sys_value" property="value" javaType="String"/>
<result column="sys_name_english" property="nameEnglish" javaType="String"/>
<result column="sys_name_chinese_cn" property="nameChineseCn" javaType="String"/>
<result column="sys_name_chinese_tra" property="nameChineseTra" javaType="String"/>
<result column="sys_order" property="tabOrder" javaType="int"/>
<result column="sys_desc" property="tabDesc" javaType="String"/>
association one to one
column -> java variable
<select id="queryAll" parameterType="String" resultMap="Master">
SELECT DISTINCT m.*,c.*
FROM
master AS m
LEFT JOIN com AS c ON M.compid = c.comp_id
ORDER BY
M.co
</select>
<resultMap id="Master" type="com.book.Master">
<association property="company" javaType="com.book.Company">
<!-- primary keys 2-->
<id column="id" property="companyId" javaType="int"/>
<result column="ab" property="Abbr" javaType="String"/>
<result column="ame" property="ame" javaType="String"/>
</association>
</resultMap>
column -> java obj.variable
适用于 Java 对象中引用主表的对象,可以通过对象引用的方式如下
public class SalesOrderLine extends EntityVO{
public SalesOrderItem soItem;
SELECT * FROM (
SELECT
sd.*,
sh.*,
<result column="sh_bill_address" property="soItem.billAddress" javaType="String"/>
select 单独查询
<association property="soItem"
javaType="com.book.erp.entity.postgresql.so.SalesOrderItem"
select="queryById"
column="{sohNo=sd_soh_no}"
fetchType="eager"/>
可以选择
fetchType="lazy"
<select id="queryById" resultMap="SoItem">
select * from so_hdr WHERE sh_soh_no = #{
sohNo}
</select>
子表单独 Select
<association property="custHold" select="queryCustHold" column="crh_cust_no"></association>
<select id="queryCustHold" parameterType="java.util.List" resultMap="CustHold">
SELECT * FROM a
</select>
通过 resultMap 映射
这样方式不需要通过Select 查询, 通过第一次查询的结果自动映射,最好使用这样方式。
- 降低数据库的压力
- 可以根据需要主语句的变化,决定是否需要子查询。
<association property="soItem" column="sh_soh_no" resultMap="SoItem"></association>
column="sh_soh_no" 是主键
SELECT
sd.*,
sh.*,
LEFT JOIN so_hdr AS sh ON sd.sd_soh_no = sh.sh_soh_no
collection one to many
位置规则是<collection > </collection> 必须在 <resultMap>..... 最后</resultMap>
方法1
<select id="queryJob" resultMap="Master">
SELECT
t1.*,ct.*
FROM
(
SELECT
t.*,g.*
FROM
biz_task AS t,
biz_group AS g,
biz_task_group AS tg
WHERE
t.task_id = tg.task_id
)<

本文详细介绍了MyBatis的基本使用方法,包括映射关系、参数传递、返回类型、SQL打印等,并针对常见问题提供了解决方案。
最低0.47元/天 解锁文章

2305

被折叠的 条评论
为什么被折叠?



