Mybatis之Mapper代理开发

🍎道阻且长,行则将至。🍓


一、Mapper概述

通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
参考gitee:MyBatis 通用 Mapper4

1.Mapper代理开发

之前我们写的Mybatis代码是基本使用方式,【参考Mybatis快速入门】,它存在硬编码的问题,例如执行sql:sqlSession.selectList("test.selectAll");,传递的字符串参数是映射配置文件中的 namespace.id值,这样写不便于后期的维护。如果使用 Mapper 代理方式则不存在硬编码问题。

2.Mapper开发流程

准备

新建一个Maven项目:
Maven Module
一个module已建立好:
在这里插入图片描述
在main的java里面创建好你的包mybatis,在这个包下面可以再建立2个包,一个存放你的mapper接口,一个创建一个类来存储我们后面用于接收数据。同时在resource里面建立一个和mapper同样结构的文件目录,里面存放SQL映射文件,这个文件名称要和mapper接口一致
在这里插入图片描述
然后在mapper里面新建一个接口,查询所有数据的例子:

package mybatis.mapper;
import mybatis.pojp.Brand;
import java.util.List;
public interface BrandMapper {
   
   
    List<Brand> selectAll();
}

继续编写我们的mapper xml文件,也就是SQL映射文件。namespace是对应接口相对于source的目录+名称, resultType是对应类的目录名称,当在mybatis的配置文件中设置好给类起别名映射,就也可以直接不区分大小写写类名了。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mybatis.mapper.BrandMapper">
    <select id="selectAll" resultType="brand">
        select *
            from tb_brand;
    </select>
</mapper>
<!-- mybatis的配置文件中设置好给类起别名映射-->
<typeAliases>
        <package name="mybatis.pojp"/>
 </typeAliases>

在这里插入图片描述
至此mapper的前置文件部分准备好了。

如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。也就是将核心配置文件的加载映射配置文件的配置修改为:

<mappers>
    <!--加载sql映射文件-->
    <!-- <mapper resource="com/itheima/mapper/UserMapper.xml"/>-->
    <!--Mapper代理方式-->
    <package name="com.itheima.mapper"/>
</mappers>

实现查询

我们可以在test里面建立我们测试项目:mybatis/test/MyBatisTest.java。使用了代理mapper之后我们执行SQL的代码就从字符串参数"test.selectAll"变为UserMapper.class了。
sqlSession.selectList("test.selectAll");—>sqlSession.getMapper(UserMapper.class);

public static void main(String[] args) throws IOException {
   
   

    //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. 执行sql
    //3.1 获取UserMapper接口的代理对象
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    List<User> users = userMapper.selectAll();

    System.out.println(users);
    //4. 释放资源
    sqlSession.close();
}

二、Mybatis-CRUD

这一节我们使用映射配置文件实现CRUD操作,也就是增删改查操作。

create table tb_brand
(
    id           int primary key auto_increment,
    brand_name   varchar(20),
    company_name varchar(20),
    ordered      int,
    description  varchar(100),
    -- 状态:0:禁用  1:启用
    status       int
);

继续上一节的内容,我们操作一个这样的数据表。

0.编辑类Brand

上一节我们在pojp包下创建了 Brand 实体类。我们根据数据表编辑对应的参数:

public class Brand {
   
   
    private Integer id;
    private String brandName;
    <
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Super algorithm

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

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

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

打赏作者

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

抵扣说明:

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

余额充值