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)