MyBatis查询功能(一)

2023-05-15 13:29:19 浏览数 (1)

一、查询语句

在MyBatis中,查询语句通常是通过select元素来定义的,例如:

代码语言:javascript复制
<select id="getUserById" parameterType="int" resultType="User">
    select * from user where id = #{id}
</select>

在上面的代码中,select元素用于定义查询语句,其中id属性表示查询语句的唯一标识符,parameterType属性表示参数类型,resultType属性表示结果类型。查询语句的具体内容在select元素的文本节点中定义。

二、查询方式

在MyBatis中,查询方式有多种,其中常见的方式如下:

查询单个结果

查询单个结果通常使用selectOne方法,例如:

代码语言:javascript复制
User user = sqlSession.selectOne("getUserById", 1);

在上面的代码中,使用selectOne方法查询id为1的用户信息。

查询多个结果

查询多个结果通常使用selectList方法,例如:

代码语言:javascript复制
List<User> userList = sqlSession.selectList("getUserListByName", "Tom");

在上面的代码中,使用selectList方法查询名字为Tom的所有用户信息。

分页查询

分页查询通常使用limit语句来实现,例如:

代码语言:javascript复制
<select id="getUserListByPage" parameterType="map" resultType="User">
    select * from user limit #{startIndex}, #{pageSize}
</select>

在上面的代码中,使用limit语句实现分页查询。

动态查询

动态查询通常使用if、choose、when和otherwise等元素来实现,例如:

代码语言:javascript复制
<select id="getUserListByCondition" parameterType="map" resultType="User">
    select * from user
    <where>
        <if test="name != null and name != ''">
            and name like '%${name}%'
        </if>
        <if test="gender != null and gender != ''">
            and gender = #{gender}
        </if>
    </where>
</select>

在上面的代码中,使用if元素实现动态查询。

嵌套查询

嵌套查询通常使用select元素来实现,例如:

代码语言:javascript复制
<select id="getUserById" parameterType="int" resultType="User">
    select * from user where id = #{id}
</select>

<select id="getOrderListByUserId" parameterType="int" resultType="Order">
    select * from order where user_id = #{userId}
</select>

<select id="getUserAndOrderList" parameterType="int" resultType="User">
    select * from user where id = #{id};
    select * from order where user_id = #{id}
</select>

在上面的代码中,getUserById和getOrderListByUserId都是普通查询语句,getUserAndOrderList使用了嵌套查询,查询用户和用户的订单列表。

0 人点赞