MyBatis 框架的常用优化方法

优化 1:单独使用 MyBatis 时,可以封装一个用来获取 MyBatis中 Session 的工具类
(1) 工具类 MybatisUtil 将 Mybatis 框架中的 Session 对象的获取和关闭封装成一个类;
(2) UserDaoImpl 中,改为对 MybatisUtil 类的调用。
 
优化2:将连接字符串写入配置文件
(1) 阅读 database.properties 文件,并根据自己系统的信息进行修改;
(2) 修改 Mybatis 框架的主配置文件,代码如下;
<!-- 引入数据库配置文件 -->
<properties resource="database.properties"/>
<!-- 配置数据库连接环境:driver、url、username、password -->
<environments default="mysql">
<!-- 开始配置 mysql -->
<environment id="mysql">
<!--配置事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
(3) 测试程序
 
优化 3:去掉 dao 层实现类,简化项目结构
 实体层包名:cn.java.pojo
 持久层包名:cn.java.mapper
 Mapper层接口名:UserMapper
 Mybatis局部配置文件名:
一定要与它所支持的mapper层中的接口同名
如:UserMapper.xml要与UserMapper.java同名
 可以将mapper层接口与Mybatis局部配置文件放在同一个包下:
 mapper层接口中定义的方法名,一定要与Mybatis局部配置文件的SQL语句的id同名;
 注意mapper层中,没有接口的实现类。
 
优化 4:使用@Before 和@After 注解,简化代码
 在测试类中的某个方法前加@Before注解,可以使得在执行其他方法前,先执行该方法,如以下代码:
@Before
public void init(){
session= MybatisUtil.getSession();
//um 就是 Mapper 的实现类
um=session.getMapper(UserMapper.class);
}
 在测试类中的某个方法前加@After注解,可以使得在执行其他方法后,再执行该方法,如以下代码:
@After
public void destory(){
//关闭 session 会话
MybatisUtil.closeSession(session);
}
 
优化 5:使用@Select 等注解,简化代码
 
优化 6:使用别名
在 Mybatis 的主配置文件中配置包的别名,简化代码。
e.g
 在主配置文件中,加入以下代码,可以给实体类取别名,简化代码:
指定包名,直接给包下所有的实体类取别名,默认的实体类的别名就是类名(不区分小大写),如 User 实体类的别名可以是 User、user、USER。
<typeAliases>
<package name="cn.java.pojo"/>
</typeAliases>
 
优化7:使用包名关联 SQL 局部配置文件和主配置文件
 在主配置文件中,加入以下代码,可以实现该包名下的所有 SQL 局部配置文件与主配置文件关联,简化代码;
<mappers>
<!--直接映射包的名字,那么这个包下面所有的 Mapper 配置文件全部关联!-->
<package name="cn.java.mapper"/>
</mappers>
 
Mybatis 的帮助文档:
https://mybatis.org/mybatis-3/zh/index.html
posted @   Linqylin  阅读(197)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示