Mybatis mapper接口动态代理开发步骤解析

一、必须遵守的四项原则

1:接口 方法名==xx.xml中的id名

2:方法返回值类型与Mapper.xml文件中返回值类型一致

3:方法的入参类型与Mapper.xml文件中入参值类型一致

4:命名空间绑定接口

二、代码

public class UserMapperTest {

private SqlSession sqlSession;

private InputStream in;

@Before
public void before() throws IOException {
  //1.读取配置文件
  in = Resources.getResourceAsStream("SqlMapConfig.xml");
  //2.创建 SqlSessionFactory 的构建者对象
  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  //3.使用构建者创建工厂对象 SqlSessionFactory
  SqlSessionFactory sqlSessionFactory = builder.build(in);
   sqlSession = sqlSessionFactory.openSession();

}

@After
public void after() throws IOException {
  //7.释放资源
  sqlSession.close();
  in.close();
}

@Test
public void findUserById() {
  UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  List<User> users = userMapper.findAll();
  for (User user : users) {
    System.out.println(user);
  }
}
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis MapperScannerConfigurer自动扫描Mapper接口生成代理注入到Spring的方法

    前言 Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring Mybatis在与Spring集成的时候可以配置 MapperFactoryBean来生成Mapper接口的代理. 例如: <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mappe

  • 在IDEA中安装MyBatis Log Plugin插件,执行mybatis的sql语句(推荐)

    查看代码执行mybatis的sql语句 File–>Settings–>Plugins 搜索 MyBatis Log Plugin Installed安装之后重启,点击上方的Tools就能看到 然后debug执行代码之后 点击启动MyBatis Log Plugin插件 就可以查看每一步执行的sql 到此这篇关于在IDEA中安装MyBatis Log Plugin插件,执行mybatis的sql语句(推荐)的文章就介绍到这了,更多相关idea 安装MyBatis Log Plugin插件内容请

  • mybatis 批量将list数据插入到数据库的实现

    随着业务需要,有时我们需要将数据批量添加到数据库,mybatis提供了将list集合循环添加到数据库的方法.具体实现代码如下: 1.mapper层中创建 insertForeach(List < Fund > list) 方法,返回值是批量添加的数据条数 package com.center.manager.mapper; import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.center.

  • Mybatis Mapper接口工作原理实例解析

    KeyWords: Mybatis 原理,源码,Mybatis Mapper 接口实现类,代理模式,动态代理,Java动态代理, Proxy.newProxyInstance,Mapper 映射,Mapper 实现 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.我们在使用 Mybaits 进行 ,通常只需要定义几个 Mapper 接口,然后在编写一个 xml 文件,我们在配置文件中

  • 详解Mybatis(五)Mapper接口

    (1)Mapper接口和原理 Mapper组建 1.Mapper文件和Mapper接口应该放在同一个接口中 2.Mapper文件中的namespace应该设置为Mapper接口的全限定名称 3.Mapper文件中的操作元素ID对应Mapper接口的方法名称 Mapper原理: 动态代理 (2)配置文件 userMapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PU

  • 详解MyBatis的getMapper()接口、resultMap标签、Alias别名、 尽量提取sql列、动态操作

    一.getMapper()接口 解析:getMapper()接口 IDept.class定义一个接口, 挂载一个没有实现的方法,特殊之处,借楼任何方法,必须和小配置中id属性是一致的 通过代理:生成接口的实现类名称,在MyBatis底层维护名称$$Dept_abc,selectDeptByNo() 相当于是一个强类型 Eg 第一步:在cn.happy.dao中定义一个接口 package cn.happy.dao; import java.util.List; import cn.happy.e

  • 详解mybatis通过mapper接口加载映射文件

    通过 mapper 接口加载映射文件,这对于后面 ssm三大框架 的整合是非常重要的.那么什么是通过 mapper 接口加载映射文件呢? 我们首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通过 <mappers> 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我们每一个映射文件都这样加载吗,这样肯定是不行的,那么我们就需要使用 mapper 接口来加载映射文件 以前的做法: 改进做法:使用 mapper 接口来加载映射文件 1.定义

  • mybatis如何通过接口查找对应的mapper.xml及方法执行详解

    本文主要介绍的是关于mybatis通过接口查找对应mapper.xml及方法执行的相关内容,下面话不多说,来看看详细的介绍: 在使用mybatis的时候,有一种方式是 BookMapper bookMapper = SqlSession().getMapper(BookMapper.class) 获取接口,然后调用接口的方法.只要方法名和对应的mapper.xml中的id名字相同,就可以执行sql. 那么接口是如何与mapper.xml对应的呢? 首先看下,在getMapper()方法是如何操作

  • Mybatis mapper接口动态代理开发步骤解析

    一.必须遵守的四项原则 1:接口 方法名==xx.xml中的id名 2:方法返回值类型与Mapper.xml文件中返回值类型一致 3:方法的入参类型与Mapper.xml文件中入参值类型一致 4:命名空间绑定接口 二.代码 public class UserMapperTest { private SqlSession sqlSession; private InputStream in; @Before public void before() throws IOException { //1

  • Mybatis mapper动态代理的原理解析

    前言 在开始动态代理的原理讲解以前,我们先看一下集成mybatis以后dao层不使用动态代理以及使用动态代理的两种实现方式,通过对比我们自己实现dao层接口以及mybatis动态代理可以更加直观的展现出mybatis动态代理替我们所做的工作,有利于我们理解动态代理的过程,讲解完以后我们再进行动态代理的原理解析,此讲解基于mybatis的环境已经搭建完成,并且已经实现了基本的用户类编写以及用户类的Dao接口的声明,下面是Dao层的接口代码 public interface UserDao { /*

  • 关于feign接口动态代理源码解析

    目录 feign接口动态代理源码解析 @FeignClinet代理类注册 feign源码解析 Feign的作用 源码及流程介绍 feign接口动态代理源码解析 @FeignClinet 代理类注册 @FeignClinet 通过动态代理实现的底层http调用,既然是动态代理,必然存在创建代理类的过程.如Proxy.newProxyInstance或者 CGlib org.springframework.cloud.openfeign 的代理类注册实现如下. 首先,org.springframew

  • Java CGLib动态代理机制(全面解析)

    一.首先说一下JDK中的动态代理: JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的 但是,JDK中所要进行动态代理的类必须要实现一个接口,也就是说只能对该类所实现接口中定义的方法进行代理,这在实际编程中具有一定的局限性,而且使用反射的效率也并不是很高. 二.使用CGLib实现: 使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类,比使用Java反射效率要高.唯一需要注意的

  • Mybatis TypeHandler接口及继承关系示例解析

    目录 开篇 TypeHandler接口 TypeHandler继承体系 IntegerTypeHandler DateTypeHandler TypeHandlerRegistry TypeHandlerRegistry#register方法 总结 开篇 JDBC类型与Java类型并不是完全一一对应的.所以在PreparedStatement绑定参数的时候需要把Java类型转为JDBC类型.JDBC类型的枚举值在JdbcType枚举值中存储. MyBatis中提供了一个接口专用于JDBC类型与J

  • Spring CGLlB动态代理实现过程解析

    JDK 动态代理使用起来非常简单,但是它也有一定的局限性,这是因为 JDK 动态代理必须要实现一个或多个接口,如果不希望实现接口,则可以使用 CGLIB 代理. CGLIB(Code Generation Library)是一个高性能开源的代码生成包,它被许多 AOP 框架所使用,其底层是通过使用一个小而快的字节码处理框架 ASM(Java 字节码操控框架)转换字节码并生成新的类.因此 CGLIB 要依赖于 ASM 的包,解压 Spring 的核心包 spring-core-3.2.2.RELE

  • Java简单实现动态代理模式过程解析

    基本知识:JDK动态代理是java.lang.reflect.*包提供的方式,它必须借助一个接口才能生成代理对象. 步骤: 1.首先建一个接口类,并提供一个实现类: public interface ISubject { public int add(int a, int b); } public class Subject implements ISubject { @Override public int add(int a, int b) { return a + b; } } 2.创建一

  • Mybatis之Mapper动态代理实例解析

    一.什么是Mapper的动态代理 采用Mapper动态代理方法只需要编写相应的Mapper接口(相当于Dao接口),那么Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同Dao接口实现类方法. Mapper接口开发需要遵循以下规范: 1.Mapper.xml文件中的namespace与mapper接口的全类名相同. 2.Mapper接口方法名和Mapper.xml中定义的每个statement的id相同. 3.Mapper接口方法的输入参数类型和mapper.xml中定义的

随机推荐