mybatis的映射器mapper

Mybatis 提供了映射器组件,通过接口+XML映射文件(注解)来动态产生一个映射器,完成实体类与数据表之间的映射。

实现映射器的步骤:

  1. 创建一个产生映射器的接口,并定义操作数据库的功能

    public interface UserMapper {
        /**
         * 根据用户编号查询用户信息
         * @param id
         * @return
         */
        public User getUserById(int id);
    }

    2.创建一个映射文件(或者使用注解)

    注意事项:映射文件需要和接口在同一级目录下,并且与接口名相同

    <?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属性:设置命名空间
            namespace的值和接口的全限定名称一致
    
            namespace属性的值+id属性的值 + SQL => 映射器
            通过映射器能够获取到接口的动态实现对象
    
            映射文件与接口名称一致,Mybatis就可以自动产生该接口的实现类
            这个实现类也重写了这个接口中的方法,这个重写接口中的方法是如何实现的?
    -->
    <mapper namespace="com.dyh.demo.dao.UserMapper">
    
        <!--
            select标签用于查询
                id属性:唯一标识,如果希望映射,id需要和接口中的方法名一致
                parameterType属性:设置参数的类型, 可以省略
                    int 别名
    
                #{}  占位符   #{标识符}  代表接口中方法的参数,只能一个参数这么用
    
                resultType属性:设置返回类型, 在没有设置别名的情况下,
                   这个返回值类型如果是类类型,必须写全限定类名
    
                   Mybatis 映射的方式之一:
                    自动映射 :  当指定了SQL语句和实体类型
                        如果知道哪些字段的数据与实体bean的属性对应
    
                        如果字段名称和实体类的属性名称一致,可以自动映射
                        会调用实例化bean并调用set方法注入值
    
                    手动映射: resultMap
    
        -->
        <select id="getUserById"
                resultType="com.dyh.demo.pojo.User">
    
            select id , name, note from t_user where id = #{id}
    
        </select>
        
    </mapper>

    3.需要在主配置文件中加载映射器


    <!--
        mappers指定多个映射文件路径
            mapper子标签指定一个映射文件路径
                url指定映射文件的网路路径
                resource:指定映射文件路径
                class:指定接口的全限定接口名


    <mappers>
        <mapper />
    </mappers>



    <mappers>
        <mapper class="com.dyh.demo.dao.UserMapper"/>
        <mapper class="com.dyh.demo.dao.BookMapper"/>
        <mapper class="com.dyh.demo.dao.OrderMapper"/>
        <mapper class="com.dyh.demo.dao.CourseMapper"/>
    </mappers>
    -->

    <mappers>
        <!--
            扫描指定的包,Mybatis会为指定包下
            所有映射器
                    接口+映射文件
                    接口+注解
            动态产生实现类对象
        -->
        <package name="com.dyh.demo.dao"/>
    </mappers>

4.测试类获取映射器

// oponSession返回的是DefaultSqlSession
        SqlSession session = factory.openSession();

        // 通过Mapper映射器获取指定接口的实现类的对象
        UserMapper mapper = session.getMapper(UserMapper.class);

        // 调用接口中的方法
        // 执行器执行的是代理对象重写后的方法
        User user = mapper.getUserById(1);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值