一、查询语句
在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使用了嵌套查询,查询用户和用户的订单列表。