MyBatis 本是apache的一个开源项目iBatis, 2010 移到google code,改名MyBatis 。2013年11月迁移到Github。
目前最新版本MyBatis 3.5.4 ,发布于2020年2月4日。
优点:门槛低、灵活。 缺点:自己写SQL,数据库移植性差。
映射(配置文件)方式:
注解方式声明:@select ...
如果sql查询的列名和pojo的属性名不一致,可以使用resultMap将列名和pojo的属性名作一个对应关系,就可以映射成功了.
使用resultMap可以完成一些高级映射:将一些列聚合到一个pojo的对象中,完成一对一查询映射。将多行多列聚合到一个List<pojo>中,完成一对多查询映射。
resultMap:也是对查询结果集进行输出映射,根据自己需求可以通过resultMap将查询结果集映射到pojo中pojo属性中,还可以将多条记录结果集映射到pojo中List<pojo>集合属性中。一对多、多对多、一对多这是针对业务来说的,可以写成符合一对一、一对多、多对多业务的sql语句,sql语句的结果集的映射由mybatis完成。写成一个复杂的多对多的sql语句,使用resultMap或resultType完成结果集映射。
实际练习
有一个在线交易的电商平台,主要包括三张数据库业务表:
现在需要基于MyBatis数据库ORM框架,实现读取商品信息和用户信息两个功能。
商品对象和用户对象定义如下:
每个用户都关联了一个Product的List,用于表示该用户所购买的所有商品,可以通过查询transaction表的交易记录获得。
操作接口定义如下:
请分别实现getProduct和getUser两个函数方法与SQL语句的映射配置文件。
模板如下:
- <?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="MyBatisTest.Op">
- <select >
- </select>
- </mapper>