mybatis使用之(获取自动生成的主键,typeAlias,提取properties,ResultMap,使用Mapper接口,SqlSessionFactory)

一.获取自动生成的主键
在这里插入图片描述
二.typeAlias(别名的使用)
在主配置文件mybatis-config.xml中添加配置
在这里插入图片描述
在mapper.xml文件中,可以直接使用别名
在这里插入图片描述
三.提取properties
1.不要把将连接数据库的信息直接写死在主配置文件mybatis-config.xml中,需要将连接数据库的信息抽离到单独的文件中(do.properties),便于后期的管理:
在这里插入图片描述
在这里插入图片描述
2.在连接池配置中获取配置文件中的数据:
3.将属性文件加载到程序中(推荐使用在主配置文件中将资源文件加载进来):
在这里插入图片描述
四.ResultMap的使用:
在执行查询操作的时候,如果列名和属性名称不一样,那么无法将结果集中的数据封装到对象中
解决方案:
需要在Mapper文件中将属性名和列名做一个映射
在查询元素中使用resultMap来指定将数据封装到哪里
注意:在该元素中只能使用resultType或者resultMap中的一种,不能同时用

resultMap定义了一个ORM的具体映射方式
1,type:代表O,即最终返回的对象类型
2,id:为该映射设置一个名称,这个名称就是在get或list中使用的resultMap对应的id
在这里插入图片描述
id/result:对应这属性的映射,可以参考hibernate的property。id和result的区别在于,id一般用于映射主键,可以提高速度,result一般对于普通的属性。
在这里插入图片描述
五.使用Mapper接口:
问题:
1.现在要执行SQL,需要去Mapper中通过statementid找到对应的SQL
而statementid通常是比较长,所以,容易写错
2.在执行SQL的时候,需要将参数传递进去,但是此时是没有类型约束的,所以容易错,而且在编译时期发现不了,只有在运行阶段才能发现

解决方案:使用接口来约束:UserMapper
在这里插入图片描述
在这里插入图片描述
使用动态代理的方式,在虚拟机中动态的创建一份UserMapper的实现类
生成的代理对象:class com.sun.proxy.$Proxy2

六.SqlSessionFactory的简单描述:

1,SqlSessionFactory在创建SqlSession的时候有多个方法,可以通过传入不同参数定制:
Transaction (事务): 你想为 session 使用事务或者使用自动提交(通常意味着很多 数据库和/或 JDBC 驱动没有事务)?
Connection (连接): 你想 MyBatis 获得来自配置的数据源的连接还是提供你自己
Execution (执行): 你想 MyBatis 复用预处理语句和/或批量更新语句(包括插入和 删除)?

2,默认的openSession创建的SqlSession具有如下特征:
会开启一个事务,但不会自动提交;
连接对象会从由活动环境配置的数据源实例中得到;
事务隔离级别将会使用驱动或数据源的默认设置;
预处理语句不会被复用,也不会批量处理更新;

3,ExecutorType:定义SqlSession的运行方式:
ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
ExecutorType.BATCH: 这个执行器会批量执行所有更新语句(会出现insert无法立刻得到id的问题)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值