1、映射接口
public interface CardMapper
{
@Select("SELECT * FROM tb_card WHERE ID = #{id} ")
Card selectCardById(Integer id);
}
public interface PersonMapper
{
@Select("SELECT * FROM tb_person WHERE ID = #{id}")
@Results(
{ @Result(id = true, column = "id", property = "id"), @Result(column = "name", property = "name"),
@Result(column = "sex", property = "sex"), @Result(column = "age", property = "age"),
@Result(column = "card_id", property = "card", one = @One(select = "cn.mybatis.mydemo4.mapper.CardMapper.selectCardById", fetchType = FetchType.EAGER)) })
Person selectPersonById(Integer id);
}
2、引入映射接口
<mappers>
<mapper class="cn.mybatis.mydemo4.mapper.PersonMapper" />
<mapper class="cn.mybatis.mydemo4.mapper.CardMapper" />
</mappers>
3、工具类
public class MySqlSessionFactory
{
private static SqlSessionFactory sqlSessionFactory = null;
// 初始化创建SqlSessionFactory对象
static
{
try
{
// 读取mybatis-config.xml文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
catch (Exception e)
{
e.printStackTrace();
}
}
// 获取SqlSession对象的静态方法
public static SqlSession getSqlSession()
{
return sqlSessionFactory.openSession();
}
// 获取SqlSessionFactory的静态方法
public static SqlSessionFactory getSqlSessionFactory()
{
return sqlSessionFactory;
}
}
4、测试代码
public class App
{
public static void main(String[] args) throws Exception
{
// 获取Session实例
SqlSession session = MySqlSessionFactory.getSqlSession();
// 获取PersonMapper实例
PersonMapper pm = session.getMapper(PersonMapper.class);
// 根据id查询Person对象,同时需要获得关联的Card对象
Person p = pm.selectPersonById(1);
// 查看查询到的Person对象
System.out.println(p);
// 查看查询到的关联的Card对象
System.out.println(p.getCard());
// 提交事务
session.commit();
// 关闭Session
session.close();
}
}