【MyBatis】代理开发&核心配置文件介绍(二)

🚗MyBatis学习·第二站~
🚩起始站:MyBatis概述&环境搭建(一)
🚩本文已收录至专栏:数据库学习之旅
👍希望您能有所收获

一.Mapper代理开发

(1) 引入

在上一篇中我们有提到一点,MyBatis可以在一定程度上解决JDBC中所遇到的硬编码问题,但是经过上一篇的案例,我们发现又涉及到了新的硬编码问题,而且操起起来比较麻烦:

  • 每次使用都得去UserMapper.xml中查看对应SQL语句的id名称。
  • 编写过程idea不会有代码提示,必须仔细书写防止错误产生。
    在这里插入图片描述
    由此在新版本的MyBatis官方文档中也更推荐我们以Mapper代理的方式使用它。
    在这里插入图片描述

比之旧版本,使用起来更为简洁且可以避免因粗心导致的一些错误。此外,我们还可以使用注解的方式来映射一些简单的SQL语句使代码显得更加简洁。

(2) 入门使用

为了使用Mapper代理开发,接下来让我们一起对上一篇编写的入门案例进行一些改造。
在这里插入图片描述

(2.1) 编写同名接口

我们需要定义一个与SQL映射文件(xml)同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
在这里插入图片描述

如此当然可以,但是配置文件与Java代码混在了一起却不利于我们进行管理。我们可以选择将xml文件依旧放在resource目录下,这是因为项目在编译之后resource中的文件也和代码在一个区域中。但是我们要在resource下创建一个与UserMapper一样的包结构,然后将其置于其中。
在这里插入图片描述

要注意的是,当我们在resource下创建多级Directory时不能像创建包一样guanzhi.mapper而应该选择guanzhi/mapper的方式.。经过Maven的compile之后我们查看target\classes文件可以发现他们确实在一个目录下。
在这里插入图片描述

此外,由于我们改了UserMapper.xml文件的位置,在mybatis-config.xml中也要进行一定的更改。
在这里插入图片描述

(2.2) 设置namespace属性

设置SQL映射文件的namespace属性为Mapper接口全限定名。
在这里插入图片描述

(2.3) 在接口中定义方法

在Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句所对应的id,并保持参数类型和返回值类型一致。
在这里插入图片描述

(2.4) 测试

至此我们已经完成了对入门案例的修改配置,接下来我们可以在代码中进行测试。

public class MyBatisDemo {
    public static void main(String[] args) {
        try {
            // 1. 加载mybatis的核心配置文件,获取SqlSessionFactory
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // 2. 获取SqlSession对象,用于执行sql
            SqlSession sqlSession = sqlSessionFactory.openSession();

            // 3.通过SqlSession的getMapper方法获取 Mapper接口的代理对象
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //4.直接使用接口中编写的方法即可
            List<User> userList = userMapper.selectAll();
            System.out.println(userList);

            // 4.释放资源
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

对比可以看到整体使用上并无太大差异,但是解决了硬编码问题,且使用起来更加舒服。
在这里插入图片描述

运行可以发现结果与之前一致
在这里插入图片描述

(2.5) 技巧补充

当我们使用mapper代理方式进行开发时,如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。
在这里插入图片描述

当我们项目简单时,可能用不用无所谓,当我们项目庞大时,使用包扫描的方式,可以避免我们写一排xxxMapper.xml

二.核心配置文件

除了上述我们已经在mybatis-config.xml使用到的配置信息外,还有许多配置信息可以在里面写。官方文档中详细介绍了许多配置信息的作用,其首句便是“MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。”本篇只介绍几个常用的配置。

注意:在配置各个标签时必须遵循官网给出的如下顺序
在这里插入图片描述

(1) 环境配置(environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中。例如,开发、测试和生产环境需要有不同的配置信息;

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
在这里插入图片描述

(2) 类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,可以降低冗余的全限定类名书写。可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean.
在这里插入图片描述

三.MyBatisX插件

MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。主要功能:

  • 可以在XML和接口方法 之间相互跳转

  • 根据编写的接口方法生成快速在xml中生成statement
    在这里插入图片描述

使用:

  1. 可以先在Mapper接口中编写方法,点击出现红色波浪线,按下alt+回车键可弹出如下选项,点击Generate statement
    在这里插入图片描述

  2. 可以看到在xml文件中直接生成了对应语句,我们只需要在此编写SQL代码即可
    在这里插入图片描述

除此之外还有一些更为便捷的方法,我们后续慢慢介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

观止study

希望我的经验能为你指路

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

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

打赏作者

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

抵扣说明:

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

余额充值