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.mybatisdemo.domain.User" alias="_User"/>
<typeAlias type="com.mybatisdemo.domain.Order" alias="_Order"/>
<typeAlias type="com.mybatisdemo.domain.Item" alias="_Item"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射文件 -->
<mappers>
<mapper resource="UserMapper.xml"/>
<mapper resource="OrderMapper.xml"/>
</mappers>
</configuration>
OrderMapper.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="orders">
<insert id="insert">
insert into orders(orderno,uid) values(#{orderNo},#{user.id})
</insert>
<!-- findById -->
<select id="selectOne" parameterType="int" resultMap="RM_Order">
select
o.id oid ,
o.orderno oorderno ,
o.uid uid ,
u.name uname ,
u.age uage ,
i.id iid,
i.itemname iitemname
from orders o
left outer join users u on o.uid = u.id
left outer join items i on o.id = i.oid
where o.id = #{id}
</select>
<!-- findAll -->
<select id="selectAll" resultMap="RM_Order">
select
o.id oid ,
o.orderno oorderno ,
o.uid uid ,
u.name uname ,
u.age uage ,
i.id iid,
i.itemname iitemname
from orders o
left outer join users u on o.uid = u.id
left outer join items i on o.id = i.oid
</select>
<!-- 自定义结果映射 -->
<resultMap id="RM_Order" type="com.mybatisdemo.domain.Order">
<id property="id" column="oid"/>
<result property="orderNo" column="oorderno"/>
<association property="user" javaType="com.mybatisdemo.domain.User">
<id property="id" column="uid" />
<result property="name" column="uname" />
<result property="age" column="uage" />
</association>
<collection property="items" ofType="_Item">
<id property="id" column="iid" />
<result property="itemName" column="iitemname" />
</collection>
</resultMap>
</mapper>
UserMapper.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="users">
<insert id="insert">
insert into users(name,age) values(#{name},#{age})
</insert>
<update id="update">
update users set name = #{name} , age = #{age} where id = #{id}
</update>
<!-- selectOne -->
<select id="selectOne" parameterType="int" resultMap="RM_User">
select
u.id uid ,
u.name uname ,
u.age uage ,
o.id oid ,
o.orderno oorderno
from users u
left outer join orders o on u.id = o.uid
where u.id = #{id}
</select>
<resultMap id="RM_User" type="_User">
<id property="id" column="uid" />
<result property="name" column="uname" />
<result property="age" column="uage" />
<!-- 映射一对多关联关系 -->
<collection property="orders" ofType="_Order">
<id property="id" column="oid" />
<result property="orderNo" column="oorderno" />
</collection>
</resultMap>
<!-- selectAll -->
<select id="selectAll" resultMap="RM_User">
select
u.id uid ,
u.name uname ,
u.age uage ,
o.id oid ,
o.orderno oorderno
from users u
left outer join orders o on u.id = o.uid
</select>
</mapper>