一、返回集合
1.返回JavaBean集合
public ListselectMyUserByNameLike(String name);
测试方法
public static void main(String[] args) { SqlSession session = null; try { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); session = sqlSessionFactory.openSession(); MyUserMapper mapper = session.getMapper(MyUserMapper.class); ListmyUsers = mapper.selectMyUserByNameLike("%a%"); System.out.println(myUsers); } catch (IOException e) { e.printStackTrace(); } finally { if (session != null) { session.close(); } }}
2.返回 Map 集合
二、返回 Map
1.一条记录
public MapselectMyUserById(Integer id);
2.多条记录,需要指定 Map 的 Key 和 Value 的类型
// 指定 Map 的 Key 从记录中的 id 列获取@MapKey("id")public MapselectMyUserByGtId(Integer id);
三、返回 resultMap 自定义结果集封装
关于自动映射封装的配置
默认数据库字段与 JavaBean 对应不上时可开启驼峰命名或查询时使用别名
1.自定义 JavaBean 的封装
确认是否成功可以关掉 MyBatis 的自动映射
public MyUser selectMyUserById(Integer id);
2.关联查询的封装,一对一,JavaBean 属性包含 JavaBean
public MyUser selectMyUserById(Integer id);
直接调用属性赋值
使用 association
使用 association 二次查询,即有两条 SQL
开启懒加载:在没有使用 Dept 的属性时,则只会加载 MyUser 的属性。即只会发送一条 SQL 语句,要使用 Dept 属性时才会发送第二条 SQL。不会一次性发送两条 SQL
3.关联查询的封装,一对多,JavaBean 属性包含 JavaBean 的集合
使用 association
public Dept getDeptById(Integer id);
关闭懒加载,使用二次查询
public Dept getDeptByIdStep(Integer did);
public ListselectMyUserByDid(Integer dId);
4.鉴别器 discriminator
上面测试中使用的实体类与数据
public class Dept { private Integer id; private String name; private ListmyUsers;
public class MyUser { private Integer id; private String name; private Integer age; private Dept dept;