当前位置: 首页 > article >正文

【2023.11.26】Mybatis自定义映射规则学习

创建自定义映射规则

<select id="selectArtist" resultMap="test">
  select * from artist
</select>

在SQL语句标签中将resultType修改为resultMap,即自定义映射的id。

编写自定义映射规则:

<resultMap id="test" type="com.test.artist">
<result column="aID" property="aID_java"/>
</resultMap>

resultMap标签:id用以连接select标签,type代替了select标签中的resultType属性。

result标签:column代表数据库中的字段名,property代表赋值给的实体类成员变量名。


实现多表查询

1.一对多查询:

@Data
public class Teacher {
    int tid;
    String name;
    List<Student> studentList;
}
<select id="getTeacherByTid" resultMap="asTeacher">
select *, teacher.name as tname from student 
inner join teach on student.sid = teach.sid
inner join teacher on teach.tid = teacher.tid where teach.tid = #{tid}
</select>

<resultMap id="asTeacher" type="Teacher">
    <id column="tid" property="tid"/>
    <result column="tname" property="name"/>
    <collection property="studentList" ofType="Student">
        <id property="sid" column="sid"/>
        <result column="name" property="name"/>
        <result column="sex" property="sex"/>
    </collection>
</resultMap>

result.id:表示自定义映射的唯一标识,不能重复。

collection标签:property表示集合的成员变量名称,ofType表示集合数据泛型(为一个类)。

在collection标签中继续写子查询结果列表。

2.多对一查询:

<resultMap id="test2" type="Student">
    <id column="sid" property="sid"/>
    <result column="name" property="name"/>
    <result column="sex" property="sex"/>
    <association property="teacher" javaType="Teacher">
        <id column="tid" property="tid"/>
        <result column="tname" property="name"/>
    </association>
</resultMap>
<select id="selectStudent" resultMap="test2">
    select *, teacher.name as tname from student left join teach on student.sid = teach.sid
                                                 left join teacher on teach.tid = teacher.tid
</select>

association标签:property表示实体类的成员变量名称,ofType表示变量类型(为一个类)。

在association标签中继续写子查询结果列表。


http://www.kler.cn/a/145699.html

相关文章:

  • NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (一)
  • Visual Studio2019调试DLL
  • ui文件转py程序的工具
  • 数据结构-二叉树
  • Linux——信号量和(环形队列消费者模型)
  • Excel 实现文本拼接方法
  • 手机APP-MCP走蓝牙无线遥控智能安全帽~执法记录仪~拍照录像,并可做基础的配置,例如修改服务器IP以及配置WiFi等
  • 开源博客项目Blog .NET Core源码学习(7:FluentValidation使用浅析)
  • 使用 Raspberry Pi、Golang 和 HERE XYZ 制作实时地图
  • 2023亚太杯数学建模思路 - 案例:粒子群算法
  • 为什么PCB板大多数都是绿色的?
  • Android获取原始图片Bitmap的宽高大小尺寸,Kotlin
  • Spark的通用运行流程与Spark YARN Cluster 模式的运行流程
  • 粒子群算法Particle Swarm Optimization (PSO)的定义,应用优点和缺点的总结!!
  • 【Jenkins】jenkins发送邮件报错:Not sent to the following valid addresses:
  • 线程的状态以及状态转移
  • Docker 部署 Nacos(单机),利用 MySQL 数据库存储配置信息
  • jpa创建自定义UUID,且符合IETF RFC 4122,不会出警告
  • 原生javascript实现放大镜效果
  • 【数据中台】开源项目(1)-LarkMidTable
  • Windows安装mysql8.0
  • 超好玩C++控制台打飞机小游戏,附源码
  • 红队攻防文库文章集锦
  • 【代码】考虑电解槽变载启停特性与阶梯式碳交易机制的综合能源系统优化调度matlab-yalmip-cplex/gurob
  • 分布式锁,分布式锁应该具备哪些条件,分布式锁的实现方式有:基于Zookeeper实现、Redis实现、数据库实现
  • cmake教程