步骤:

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

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

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

四、编码

1.通过SQL Session的getMapper方法获取Mapper接口的代理对象

2.调用对应方法完成sql语句的执行

------正文-------

一、

将Mapper接口和SQL映射文件放置在同一目录下时,可以在resources包下创建一个与Mapper接口同名的包,在resources下创建多层次包可以写org/example/mapper,这里的名字要与mappper接口名一致,创建多层次必须是/分隔开,org.example.mapper创建的是一个包。

第一步完成后compell(编译Maven),可以看到如下图:

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

代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
名称空间
-->
<mapper namespace="org.example.mapper.UserMapper"><!--设置SQL映射文件的namespace为MaPPer接口全限定名--><select id="selectAll" resultType="org.example.pojo.User">select * from tb_user;</select>
</mapper>

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

package org.example.mapper;import org.example.pojo.User;import java.util.List;//返回对象集合用的是List
public interface UserMapper {List<User> selectAll();
}

四、

1.通过SQL Session的getMapper方法获取Mapper接口的代理对象,UserMaper userMapper = sqlSession.getMapper(UserMapper.class),传入UserMapper的类型,返回一个UserMapper代理对象userMapper。userMapper会调用它的方法selecAll方法,selectAll方法对应着.xml文件里的SQL语句id,通过Id获取对应的SQL语句,方法返回值为List<xxx>,所以相当于是执行了

List<User> users = sqlSession.selectList("test.selectAll");(在Mybatis学习笔记)

但是消除了需要显示写出id等硬编码问题,有利于后期维护。

2.调用对应方法完成sql语句的执行

main函数代码:

package org.example.pojo;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 org.example.mapper.UserMapper;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class MyBatisDemo2 {public static void main(String[] args) throws IOException {//加载核心配置文件,获取sqlSessionFactory对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取sqlSess对象,用它执行sql语句SqlSession sqlSession=sqlSessionFactory.openSession();//执行sql语句//List<User> users = sqlSession.selectList("test.selectAll");//获取UserMapper接口的代理对象UserMapper  UserMapper = sqlSession.getMapper(UserMapper.class);//传入UserMapper的类型,返回一个UserMapper代理对象List<User> users = UserMapper.selectAll();System.out.println(users);//释放资源sqlSession.close();}
}

使用Mapper代理开发解决硬编码问题相关推荐

  1. Mybatis学习总结(二)——Mapper代理开发

    一.概要 1.原始DAO开发中存在的问题:(1)DAO实现方法体中存在很多过程性代码. (2)调用SqlSession的方法(select/insert/update)需要指定Statement的id ...

  2. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    阅读目录 一:原始dao开发方法 二:mapper代理方法(只需要mapper接口,相当于dao接口) 承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisS ...

  3. 初识 My Batis一 什么是My Batis,JDBC缺点,My Batis简化,Mapper 代理开发,My Batis 核心配置文件

    文章目录 MyBatis 什么是MyBatis? 持久层 框架 JDBC缺点 Mybatis简化 MyBatis快速入门 查询 user 表中所有数据 解决 SQL 映射文件的警告提示 Mapper代 ...

  4. Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发

    前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)--MyBatis的基础知识.MybatisFirst中存在大量重复的代码.这次简化下代码: 使用MyBatis开发Dao ...

  5. 4、MyBatis + Log4j日志查看Sql参数、结果集元数据、Mapper代理开发、JDK的动态代理与CGLib代理

    文章目录 MyBatis优化开发 日志 ResultSet如何转换为Java对象 数据库元数据 结果集元数据 Fastjson 基于MyBatis的DAO开发(传统) 推荐mapper代理开发 JDK ...

  6. Mybatis的mapper代理开发方法

    一.开发规范 1.映射文件中的namespase等于mapper接口类路径 2.statement的id与mapper中的方法名一致 3.让mapper的接口方法输入参数类型与statement中的p ...

  7. SSM21:Mapper代理开发

    目录 创建数据库 连接数据库 导入坐标pom.xml 编写mybatis.xml配置文件 编写日志配置文件 编写sql映射文件UserMapper.xml 创建UserMapper接口 创建pojo类 ...

  8. 09_Mybatis开发Dao方法——mapper代理开发规范

    一.开发规范 需要编写mapper.xml映射文件(本项目为userMapper.xml,类似于前面的user.xml). 编写mapper接口需要遵循一些开发规范,这样MyBatis可以自动生成ma ...

  9. 大厂卡你的学历,究竟是为了什么?,android开发视频硬编码

    因此Android工程师的养成,一部分依然靠纯自学,大部分则靠培训,无论「培训」背负了多少的骂名,但整个Android行业,二三十万的从业者,抛开少部分大学计算机科班和软件工程相关专业的,绝大多数都是 ...

最新文章

  1. 程序员入职锦囊妙计 --读书笔记
  2. linux字符设备驱动架构,linux驱动开发--字符设备:cdd_cdev结构中private_data使用
  3. 【数理逻辑】谓词逻辑 ( 个体词 | 个体域 | 谓词 | 全称量词 | 存在量词 | 谓词公式 | 习题 )
  4. Python二分查找的三种思路
  5. 为什么`malloc`出来的内存也能当成对象正常使用
  6. Linux基础优化方法(四)———远程连接缓慢优化
  7. JAVA常用API或编程工具002---SpringSource Tool Suite:基于Eclipse的Spring应用开发环境
  8. 剑指offer面试题[27]-二叉搜索树与双向链表
  9. MySQL CASE WHEN 根据一个表的字段值不同关联查询两张不同的表【子查询】
  10. 中国土壤全磷含量空间分布数据
  11. 安卓rom制作教程_【教程】安卓手机刷入第三方ROM通用教程
  12. C语言字符数组练习题
  13. Kconfig中select与depends on原理
  14. 像智能手机一样造车,可能吗?
  15. shell中大于号和小于号
  16. react-app-rewired 修改 react 项目默认端口号
  17. 在FPGA开发板上玩《超级玛丽》之笔记 -(2)重构2A03CPU
  18. 北航计算机专业录取线,北航各专业录取分数线
  19. Java9、10、11、12、13、14、15、16、17个版本新特性
  20. win10xp化折腾指南

热门文章

  1. 【设计模式】11-15:迪米特拉(最小知识)原则、外观模式、建造者模式、观察者模式、抽象工厂模式...
  2. POI设置excel样式
  3. 【随手记】Oracle存储过程报错 Compilation errors for PACKAGE BODY
  4. C++泰勒公式实现反余弦函数
  5. Android 底部导航栏-极致简单版
  6. 练习---打印出电影天堂中电影的下载链接
  7. 微服务实施笔记(二)——搭建实验部署环境
  8. Redis——发布/订阅
  9. android 说出密码,小米路由器微信好友认证功能实际体验
  10. Signal Processing投稿经历