Mapper代理开发

Mapper入门案例

使用Mapper代理方式,必须满足以下要求:

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

  1. 定义接口 名字与SQL映射文件一样
    image
  2. 将接口和映射文件放同意目录下:
    在resources创建Directory 命名为com/itheima/mapper,将映射文件拖进去
    image
    文件便会在同一文件夹下
    image

设置SQL映射文件(xml)的namespace属性为Mapper接口全限定名

将映射文件中的namespace改为接口的路径名

<mapper namespace="com.itheima.mapper.UserMapper">//这里
<!--    resultType返回值类型 这里封装为User-->
    <select id="selectAll" resultType="com.itheima.pojo.User">
        select * from tb_user;
    </select>
</mapper>

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

<mapper namespace="com.itheima.mapper.UserMapper">
<!--    resultType返回值类型 这里封装为User-->
    <select id="selectAll" resultType="com.itheima.pojo.User">//这里的id和返回值 要和mapper接口中的一致
        select * from tb_user;
    </select>
</mapper>

mapper接口中 要返回List集合对象(查询多个用集合 查询一个用独立的对象)

List<User> selectAll()

在mybatis-config.xml中,修改加载SQL映射文件的位置

1第一种

<mappers>
        <!--        加载SQL映射文件-->
        <mapper resource="com/itheima/mapper/UserMapper.xml"/>
    </mappers>

2第二种 包扫描

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

Demo

public class MybatisDemo2 {

    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<User> users = sqlSession.selectList("test.selectAll");不用这种
//--------------------------------------------------------------------------------------------用这种
        //3.1获取UserMapper接口的代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = userMapper.selectAll();
//---------------------------------------------------------------------------------------------------
        System.out.println(users);
        //4. 释放资源
        sqlSession.close();

    }
}
posted @   Crazy_chicken  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示