MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Objects,普通的Java对象)为数据库中的记录。
在MyBatis中,获取主键的方法主要有两种:通过实体类属性名和通过resultMap,下面详细介绍这两种方法。
通过实体类属性名获取主键
1、在实体类中定义主键属性
public class User { private Integer id; // 用户ID private String name; // 用户名 // 省略getter和setter方法 }
2、在映射文件中使用<key>
标签指定主键属性
<resultMap id="UserResultMap" type="com.example.entity.User"> <id property="id" column="user_id"/> <!-将数据库中的user_id字段映射到实体类的id属性上 --> <result property="name" column="user_name"/> <!-将数据库中的user_name字段映射到实体类的name属性上 --> </resultMap>
3、在查询语句中使用useGeneratedKeys
和keyProperty
属性指定主键属性
<select id="getUserById" resultMap="UserResultMap" parameterType="int" useGeneratedKeys="true" keyProperty="id"> SELECT * FROM user WHERE id = {id} </select>
通过resultMap获取主键
1、在映射文件中定义一个resultMap,用于描述如何从数据库结果集中提取数据并映射到实体类对象上。
<resultMap id="BaseResultMap" type="com.example.entity.User"> <id column="id" property="id" /> <result column="name" property="name" /> </resultMap>
2、在查询语句中使用resultMap
属性指定resultMap的名称,MyBatis会自动将查询结果集与resultMap进行匹配,并将匹配的数据填充到实体类对象中,MyBatis会自动将数据库中的主键值赋给实体类对象的主键属性。
<select id="getUserById" resultMap="BaseResultMap"> SELECT * FROM user WHERE id = {id} </select>
相关问题与解答:
Q1: MyBatis中如何判断查询结果是否存在?
A1: 在映射文件中的查询语句中,可以使用<if>
标签进行条件判断。
<select id="getUserById" resultMap="BaseResultMap"> SELECT * FROM user WHERE id = {id} AND status = 1 <if test="status != null and status != ''">AND status = {status}</if> </select>
Q2: MyBatis中如何实现分页查询?
A2: 在映射文件中的查询语句中,可以使用LIMIT
关键字实现分页查询。
<select id="getUsersByPage" resultMap="BaseResultMap" parameterType="map"> SELECT * FROM user ORDER BY create_time DESC LIMIT {offset}, {pageSize} </select>
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/253928.html