#三.mybatis-小结以及实验题目

1 第一个入门case的小结
    
① XXXMapper.xml文件中,namespace必须是接口全路径
    ② XXXMapper.xml中的id必须是接口里面的方法名 ,两者一致
    ③ XXXMapper.xml中的parameterType类型必须和对应方法的形参一致
    ④ XXXMapper.xml中的resultType类型必须和对应方法的返回值类型一致
    ⑤ 每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的,定义为局部变量
     ⑥ mapper接口实现动态代理对象
        [1] 定义:
            只需要编写mapper接口的(等价于传统的dao接口),Impl实现类,也即动态代理+面向接口
            1) XXXdao接口-------->XXXMapper.java
            2) XXXdao接口Impl实现类-------->XXXMapper.xml

   
2 再次和JDBC、Hibernate、JPA对比学习mybatis解决了哪些问题,为何有它一席之地
   
① 相对于JDBC
        [1] Sql语句配置在XXXXmapper.xml文件中与java代码分离
        [2] 数据库连接池
        [3] Where条件的频繁变化,Mybatis自动将java对象映射至sql语句, 通过statement中的parameterType定义输入参数的类型。
    ② 相对于Hibernate
        [1] Hibernate太重,mybatis轻量级
        [2] 严格来说,Mybatis是个半自动化的SQL Mappering映射框架,因为MyBatis需要程序员自己编写Sql语句
        [3] 学习门槛低,简单易学,看官网文档都知道,不到100页,可以快速上手。 程序员直接编写原生态sql,可严格控制sql执行性能,sql在手,天下我有。
    ③ 相对于JPA
    ④ 相对于Spring Data
3 实验
  
  实验0:保存Customer
    实验1:删除cust_id为8的Customer
    实验2:更新cust_id为10的Customer的姓名和年龄
    实验3:查询cust_id为12的Customer
    实验4:查询List,没有查询条件

    实验5:查询List,查询条件是 (以实体类对象形式封装查询条件)
        cust_name包含'a'
        cust_age大于20
    实验6:查询List,查询条件是 (以Map类型的对象封装查询条件)
        cust_name包含'a'
        order_amount大于20
    实验7:查询List,查询条件是 (传多个零散的参数)
        cust_age在25~30之间

    实验8:查询order_id为5的cust_name和order_name (将零散的查询结果封装到Map对象中返回)
    实验9:查询order_amount大于20的cust_name和order_name (查询结果的一条记录对应一个Map对象,多条记录的结果可以使用List封装Map对象)
    实验10:查询cust_id为12的Customer,但是使用resultMap映射 (使用resultMap方式解决字段名与属性名不一致问题)

    实验11:查询结果为单值,统计Customer数量

    实验12:执行DDL语句创建数据库表

    实验13:调用原生API查询cust_id为12的Customer
    实验14:通过注解版Mapper接口查询cust_id为12的Customer

你可能感兴趣的:(mybatis)