Mybatis复习(二)(Mybatis种注册Mapper文件的注意事项,SqlSessionFactoryBuilder及生命周期和作用域)

起别名:

mapper配置文件中
<select id="getAllUserLike" resultType="com.dongmu.pojo.User">
        select * from User where name like  '%${param}'
    </select>
可以发现resultType比较长,怎么可以直接使用你 User呢?    
方式:起别名。
在mybatis-config.xml主配置文件中使用:
<mappers>
        <package name="com.dongmu.dao"/>
        <typeAlias type="com.dongmu.pojo.User" alias="kkk"/>
</mappers>
第一种指定类中的类名首字母小写作为别名。我做的时候大写也可以,官方建议使用小写。
第二种是指定别名,但是同时只能用一种。两种同时用报错
第三种方式:使用注解。而且这种优先级最高。
默认的别名:https://mybatis.net.cn/configuration.html

关于setting的设置:
在这里插入图片描述

为什么mysql一般用下划线连接命名呢,为什么不是驼峰命名?
因为在Oracle或者其他数据库会把字段名转为大写,不用下划线不容易认出来,可读性太差了

在这里插入图片描述
在这里插入图片描述
完整配置(了解):

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

Mybatis种注册Mapper文件的注意事项

<mappers>

        <mapper resource=""/>//指定xml文件的位置,这时候文件放在哪里都可以
        <mapper class=""/>//这种方式接口和mapper文件必须同名且在同一个包下
        <package name="com.dongmu.dao"/>//这种扫面包的方式和class的方式一样,必须同名同包
    </mappers>

生命周期和作用域
(前面说过,很重要)

SqlSessionFactoryBuilder一旦创建了 SqlSessionFactory,就不再需要它了, 因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。
SqlSessionFactory是很占用资源的,有一个就够了,因此 SqlSessionFactory 的最佳作用域是应用作用域。 有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
每个线程都要有它自己的Sqlsession。绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。用完了之后要关闭。这个关闭操作很重要。
一个Session可以获得多个Mapper

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海冥鱼未眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值