MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接
userinfo表
mybatis-config.xml
测试类
嵌套的resultMap下的user.xml配置
表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
单个resultMap的使用
User表
user.java
package com.zwk.domain;
/**
* Created by zwk on 16-11-22.
*/
public class User {
private int id;
private String password;
private UserInfo userInfo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public UserInfo getUserInfo() {
return userInfo;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "id="+this.id+" password= "+this.password+" "+this.userInfo.toString();
}
}
userinfo表
userinfo.java
package com.zwk.domain;
/**
* Created by zwk on 16-11-21.
*/
public class UserInfo {
private String id;
private String name;
private int age;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "id:"+this.id+" name:"+this.name+" age:"+this.age+" address:"+this.address;
}
}
user.xml
<resultMap id="UserResult" type="User">
<id property="id" column="id"/>
<result property="password" column="password"/>
<result property="userInfo.id" column="info_id"/>
<result property="userInfo.name" column="name"/>
<result property="userInfo.age" column="age"/>
<result property="userInfo.address" column="address"/>
</resultMap>
<select id="findUserById" parameterType="String" resultMap="UserResult">
select * from test_userinfo i,test_user u where i.id=u.id and u.id=#{id}
</select>
mybatis-config.xml
<?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>
<typeAliases>
<typeAlias type="com.zwk.domain.UserInfo" alias="UserInfo"/>
<typeAlias type="com.zwk.domain.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="pooled">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/zwk_test?useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false"/>
<property name="username" value="xxx"/>
<property name="password" value="xxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/zwk/domain/UserInfo.xml"/>
<mapper resource="com/zwk/domain/User.xml"/>
<mapper class="com.zwk.dao.UserInfoDAO"/>
</mappers>
</configuration>
测试类
public class Test {
public static void main(String args[]){
String resource="mybatis-config.xml";
InputStream is=Test.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
SqlSession session=sqlSessionFactory.openSession();
User user=session.selectOne("com.zwk.domain.UserMapper.findUserById",1);
System.out.println(user);
}
}
嵌套的resultMap下的user.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.zwk.domain.UserMapper">
<resultMap id="UserResult" type="User">
<id property="id" column="id"/>
<result property="password" column="password"/>
<association property="userInfo" column="info_id" select="getUserInfoById"/>
</resultMap>
<select id="getUserInfoById" resultType="UserInfo">
select * from test_userinfo where id=#{id}
</select>
<select id="findUserById" parameterType="String" resultMap="UserResult">
select * from test_userinfo i,test_user u where i.id=u.id and u.id=#{id}
</select>
</mapper>