1.-方式1:resultType中的实体类的属性作为查询语句中的别名,让别名和属性保持一致
2.使用resultMap映射
案例准备工作:创建表:
use mybatis;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户姓名',
`user_age` int NULL DEFAULT NULL COMMENT '用户年龄',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `users` VALUES (1, '贾宝玉', 14);
INSERT INTO `users` VALUES (2, '林黛玉', 13);
INSERT INTO `users` VALUES (3, '薛宝钗', 15);
SET FOREIGN_KEY_CHECKS = 1;
实体类Users.java
public class Users {
private Integer userId;
private String userName;
private Integer userAge;
@Override
public String toString() {
return "Users{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userAge=" + userAge +
'}';
}
1.使用别名
接口UsersMapper.java
public interface UsersMapper {
Users queryByID(int userId);
}
映射文件UsersMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kkb.mapper.UsersMapper">
<!--方式1:resultType中的实体类的属性作为查询语句中的别名,让别名和属性保持一致-->
<select id="queryByID" resultType="com.kkb.pojo.Users">
select user_id as userId,user_name as userName,user_age as userAge from users where
user_id=#{id};
</select>
</mapper>
测试类TestUsersMapper.java
package com.kkb.test;
import com.kkb.mapper.UsersMapper;
import com.kkb.pojo.Users;
import com.kkb.util.MybatisUtil;
import org.junit.Test;
/**
* ClassName: TestUsersMapper
* 测试类
* @author wqs
* @version 1.0
*/
public class TestUsersMapper {
private UsersMapper usersMapper= MybatisUtil.getSqlSession().getMapper(UsersMapper.class);
@Test
public void test01(){
Users user = usersMapper.queryByID(1);
System.out.println(user);
}
}
2 使用resultMap
接口UsersMapper.java添加方法
Users queryByID2(int userId);
映射文件UsersMapper.xml添加如下内容:
<!--方式2:通过resultMap自行映射-->
<select id="queryByID2" resultMap="baseMap">
select * from users where user_id=#{id};
</select>
<resultMap id="baseMap" type="com.kkb.pojo.Users">
<id column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
<result column="user_age" property="userAge"/>
</resultMap>
测试:
@Test
public void test02(){
Users user = usersMapper.queryByID2(1);
System.out.println(user);
}