1、概述
- 在映射配置文件中,查询语句标签
<select>
中,有resultType
这一属性,如果实体的属性名与表中字段名一致,会将查询结果自动封装到实体类中。但是如果不一致,则需要在映射配置文件中使用<resultMap>
标签配置映射关系,并在<select>
中使用resultMap
。
2、举例
CREATE TABLE xxx(
id INT NOT NULL,
name VARCHAR(3) NOT NULL
);
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* 数据库中字段名 与 类中属性名 可以不一致
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Xxx {
private Integer idxxx;
private String namexxx;
}
import com.yscyber.mybatis.one.Xxx;
import java.util.List;
public interface XxxRepo {
List<Xxx> listAllXxx();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<typeAliases>
<typeAlias type="com.yscyber.mybatis.one.Xxx" alias="Xxx"/>
</typeAliases>
<environments default="dev">
<!-- 配置数据源 -->
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc_driver}"/>
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_username}"/>
<property name="password" value="${jdbc_password}"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper class="com.yscyber.mybatis.one.repo.XxxRepo"/>
</mappers>
</configuration>
<?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.yscyber.mybatis.one.repo.XxxRepo">
<!-- <id> 主键字段 -->
<!-- <result> 非主键字段 -->
<!-- property POJO 属性名 -->
<!-- column 数据库表字段名 -->
<resultMap id="xxxResultMap" type="com.yscyber.mybatis.one.Xxx">
<result property="idxxx" column="id"/>
<result property="namexxx" column="name"/>
</resultMap>
<select id="listAllXxx" resultMap="xxxResultMap">
SELECT id, name
FROM xxx
</select>
</mapper>
@Test
public void test7() {
try {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
XxxRepo xxxRepo = sqlSession.getMapper(XxxRepo.class);
List<Xxx> xxxList = xxxRepo.listAllXxx();
for (Xxx val : xxxList) {
System.out.println(val);
}
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
网友评论