MyBatis 使用
2023/9/20原创大约 2 分钟约 545 字
1. MyBatis 关联查询
1.1. MyBatis 一对多关联查询
<!--一对多-->
<resultMap id="myStudent1" type="student1">
<id property="sid" column="sid"/>
<result property="sname" column="sname"/>
<result property="sex" column="sex"/>
<result property="sage" column="sage"/>
<collection property="list" ofType="teacher">
<id property="tid" column="tid"/>
<result property="tname" column="tname"/>
<result property="tage" column="tage"/>
</collection>
</resultMap>
<!--一对多-->
<select id="find1" resultMap="myStudent1">
select * from student1 s left join teacher t on s.sid=t.sid
</select>
1.2. MyBatis 多对一关联查询
<!--多对一-->
<resultMap id="myTeacher" type="teacher">
<id property="tid" column="tid"/>
<result property="tname" column="tname"/>
<result property="tage" column="tage"/>
<association property="student1" javaType="Student1">
<id property="sid" column="sid"/>
<result property="sname" column="sname"/>
<result property="sex" column="sex"/>
<result property="sage" column="sage"/>
</association>
</resultMap>
<!--多对一-->
<select id="find2" resultMap="myTeacher">
select * from teacher t right join student1 s on t.sid=s.sid
</select>
1.3. MyBatis 多对多关联查询
<!--多对多 以谁为主表查询的时候,主表约等于1的一方,另一方相当于多的一方-->
<select id="find3" resultMap="myStudent1">
select * from student1 s left join relevance r on s.sid=r.sid left join teacher t on r.tid=t.tid
</select>
2. include: 引用 sql 标签
相关信息
这个标签和<sql>
是天仙配,是共生的,include 用于引用 sql 标签定义的常量。比如引用上面 sql 标签定义的常量
refid 这个属性就是指定<sql>
标签中的 id 值(唯一标识)
<select id="findbyid" resultType="student">
<include refid="selectvp"/>
WHERE 1=1
<if test="sid != null">
AND sid like #{sid}
</if>
</select>
2.1. 引用其他 XML 中的 SQL 片段
比如你在 com.xxx.dao.xxMapper 这个 Mapper 的 XML 中定义了一个 SQL 片段如下:
<sql id="Base_Column_List"> ID,MAJOR,BIRTHDAY,AGE,NAME,HOBBY</sql>
此时我在 com.xxx.dao.PatinetMapper 中的 XML 文件中需要引用,如下:
<include refid="com.xxx.dao.xxMapper.Base_Column_List"></include>
3. 返回 list map 类型
3.1. 使用 resultMap
<!-- MyBatis映射文件 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<!-- 定义resultMap -->
<resultMap id="userMap" type="map">
<result property="id" column="id" javaType="int"/>
<result property="name" column="name" javaType="string"/>
</resultMap>
<!-- 查询操作 -->
<select id="selectAllUsers" resultMap="userMap">
SELECT id, name FROM users
</select>
</mapper>
3.2. 使用 resultType
<!-- MyBatis映射文件 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<!-- 查询操作 -->
<select id="selectAllUsers" resultType="map">
SELECT id, name FROM users
</select>
</mapper>