Mybatis使用Mapper代理开发

前置条件请查看:在Idea中使用mybatis查询mysql中的数据-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/forClash/article/details/139604687

目录

前置条件请查看:在Idea中使用mybatis查询mysql中的数据-CSDN博客https://blog.csdn.net/forClash/article/details/139604687

1、什么是Mapper代理开发?

2、为什么要使用Mapper代理开发?

3、如何使用Mapper代理开发?

1.定义与SQL映射文件同名的Mapper接口,并将Mapper接口与SQL映射文件放置在同一目录下

2.设置SQL映射文件的namespace属性为Mapper接口全限定名

3.在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并且保持参数类型和返回值类型一致

4.编码

                1) 通过SqlSession的getMapper方法获取 Mapper接口的代理对象


1、什么是Mapper代理开发?

在MyBatis中,Mapper接口作为数据访问层,它声明了操作数据库的方法。Mapper代理开发是指MyBatis会自动为Mapper接口生成代理实现类,开发者只需编写接口方法声明即可。这种方式大大简化了开发步骤。

2、为什么要使用Mapper代理开发?

  • 减少了编写SQL映射文件的工作量。接口方法与映射文件一一对应,更易维护。
  • 提高代码的可读性和可维护性。接口方法名称能直接表达业务语义。
  • 支持动态SQL生成,提高了灵活性。
  • 方便集成其他框架,如Spring。

3、如何使用Mapper代理开发?

1.定义与SQL映射文件同名的Mapper接口,并将Mapper接口与SQL映射文件放置在同一目录下

说人话就是:创建接口,放统一目录。

1.1创建Mapper接口

1.2文件放在同一目录                    

       1.2.1右键点击BrandMapper, 左键点击 CopyPath

        1.2.2Path From Source Root 后面就是BrandMapper的路径 

        1.2.3根据BrandMapper的路径,在resources目录下创建相同的包结构

2.设置SQL映射文件的namespace属性为Mapper接口全限定名

代码如下:

<?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">
<!--
    namespace:名称空间
-->

<mapper namespace="com.it.mapper.BrandMapper">

    <select id="selectAll" resultType="com.it.pojo.Brand">
        select * from  tb_brand;
    </select>
</mapper>

3.在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并且保持参数类型和返回值类型一致

Mapper接口中定义方法代码如下:

package com.it.mapper;

import com.it.pojo.Brand;

import java.util.List;

public interface BrandMapper {

    List<Brand> selectAll();
}

在mybatis-config.xml中设置SQL映射文件

代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--类型别名,设置后不区分大小写-->
    <!--<typeAliases>
        <package name="com.it.pojo"/>
    </typeAliases>-->

    <environments default="development">
        <!--
        environments:配置数据库连接环境信息。可以配置多个environment,
        通过default属性切换不同的environment
        -->
        <environment id="development">
            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///db1?useSSL?false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>

        </environment>

    </environments>
    <mappers>
        <!--加载sql映射文件-->
        <mapper resource="com/it/mapper/BrandMapper.xml"/>
    </mappers>
</configuration>

4.编码

                1) 通过SqlSession的getMapper方法获取 Mapper接口的代理对象

                2)  调用对应方法完成sql的执行

代码如下:

package com.it;

import com.it.mapper.BrandMapper;
import com.it.pojo.Brand;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


/*
* Mapper代理开发
* */
public class MybatisMapperDemo2 {

    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
       // List<Brand> brands = sqlSession.selectList("testname.selectAll");
        
        //3.获取UserMapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        List<Brand> brands = brandMapper.selectAll();

        System.out.println(brands);

        //4.释放资源
        sqlSession.close();
    }
}

运行结果:

细节:如果Mapper接口名称和SQL映射文件名称相同,并且在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--类型别名,设置后不区分大小写-->
    <!--<typeAliases>
        <package name="com.it.pojo"/>
    </typeAliases>-->

    <environments default="development">
        <!--
        environments:配置数据库连接环境信息。可以配置多个environment,
        通过default属性切换不同的environment
        -->
        <environment id="development">
            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///db1?useSSL?false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>

        </environment>

    </environments>
    <mappers>
        <!--加载sql映射文件-->
        <!--<mapper resource="com/it/mapper/BrandMapper.xml"/>-->

        <!--使用Mapper代理方式的规范后,可使用包扫描-->
        <package name="com.it.mapper"/>

    </mappers>
</configuration>

  • 24
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值