mybatis代理类Demo
前言
简单实现通过代理接口来实现对数据的查询demo,也是对mybatis的一个熟练。首先是编写接口代理。
public interface IBookMapper {
List<BookModel> getBookList() throws Exception;
}
代理接口编写完毕后,需要在sqlMapConfig中添加映射,同时编码对应的mapper配置。我的接口和接口对应的mapper.xml是放在一个包下面的,目的是为了通过mappers映射器的package映射直接映射类过来。
<configuration>
<properties resource="book.properties">
</properties>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url"
value="jdbc:mysql://localhost:3306/mytest?characterEncoding=utf-8" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.pwd}" />
</dataSource>
</environment>
</environments>
<mappers>
<package name="Mapper" />
</mappers>
</configuration>
对应的mapper配置
<mapper namespace="Mapper.IBookMapper">
<select id="getBookList" resultType="Models.BookModel">
select * from book
</select>
</mapper>
需要注意的是:mapper配置中的namespace是我们要找的代理接口,需要整个命名空间权限名。我们在sqlSessionConfig中的mappers映射器中的pacakge的name是我们要去映射的包,包里面有我们的代理接口和映射配置文件,配置文件的名字和代理接口的名字是一样的。如下图:

基本已经完成,接下来我们开始通过junit来测试我们的结果。
@Test
public void selectTest() {
SqlSession openSession = factory.openSession();
IBookMapper mapper = openSession.getMapper(IBookMapper.class);
List<BookModel> list = null;
try {
list = mapper.getBookList();
} catch (Exception e) {
e.printStackTrace();
}
openSession.close();
if (list != null) {
for (BookModel b : list) {
System.out.println(b);
}
}
}
测试结果,在我们的控制台输出我们的查询结果:

总结
对于学习新的东西,有人指导一下我想会更好,没有指导,在自己学完以后,做个demo是对所学的东西的最好的诠释。即使有人指导,有人教,那么在听取以后,要去思考把东西融入到自己的理解中然后按照自己的理解去demo一下会更加能加深对知识的巩固。一定是接着别人的讲,而不是按照别人的讲。更多的是要去与大家分享,很可能会得到更多的收获。
don't say you finish study,no,it just as beginning
mybatis代理类Demo的更多相关文章
- 初看Mybatis 源码 (二) Java动态代理类
先抛出一个问题,用过Mybatis的都知道,我们只需要定义一个Dao的接口,在里面写上一些CRUD相关操作,然后配置一下sql映射文件,就可以达到调用接口中的方法,然后执行sql语句的效果,为什么呢? ...
- Mybatis源码解析,一步一步从浅入深(六):映射代理类的获取
在文章:Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们提到了两个问题: 1,为什么在以前的代码流程中从来没有addMapper,而这里却有getMapper? 2,UserDao ...
- Mybatis源码解析(三) —— Mapper代理类的生成
Mybatis源码解析(三) -- Mapper代理类的生成 在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过 MapperFactoryBean 的 getObject( ...
- 通过模拟Mybatis动态代理生成Mapper代理类,讲解Mybatis核心原理
本文将通过模拟Mybatis动态代理生成Mapper代理类,讲解Mybatis原理 1.平常我们是如何使用Mapper的 先写一个简单的UserMapper,它包含一个全表查询的方法,代码如下 pub ...
- 探索Mybatis之JDK动态代理:探究Proxy.newProxyInstance()生成的代理类解析
Mybatis的Mapper接口UserMapper 1 package com.safin.Mapper; 2 3 import com.safin.Pojo.User; 4 5 import ja ...
- Spring+MyBatis+SpringMvc整合Demo
客户关系管理系统demo 项目分析 该demo使用技术及环境:ssm+maven+bootstrap+jsp+mysql+idea+jdk1.8 需求:客户管理,实现客户列表分页显示如下图 项目开始 ...
- 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...
- Castle Windsor 的动态代理类如何获取实际类型
问题 在实际开发过程当中我们可能会针对某些类型使用动态代理技术(AOP),注入了一些拦截器进行处理,但是一旦某个类型被动态代理了,那么就会生成一个代理类.这个时候在该类内部使用 GetType() 方 ...
- 用cglib包来为类产生动态代理类对象
一:在JDK里也有动态代理的类和接口,是Proxy和InvocationHandler,但是Proxy只能为接口产生代理类,借助InvocationHandler的实现类来完成对类对象的代理: 但是在 ...
随机推荐
- iphone手机中对于html和css的一些特殊处理
1.iphone safari iso系统不兼容:hover的解决办法: 方法一: a:hover设置的样式在IOS系统的浏览器内显示不出来,看来是IOS系统的移动设备中,需要在按钮元素或者是body ...
- 选择排序——Python实现
选择排序: 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小( ...
- EF通用数据层封装类(支持读写分离,一主多从)
浅谈orm 记得四年前在学校第一次接触到 Ling to Sql,那时候瞬间发现不用手写sql语句是多么的方便,后面慢慢的接触了许多orm框架,像 EF,Dapper,Hibernate,Servic ...
- ASP.NET 开发者 开始学习ASP.NET Core 2吧
. NET Core 从2016年6月28日发布,过去了将近一年的时间,但是在工作中发现大家对.net core的接受程度并不高,这只是一个感觉,俗话说“没有调查就没有发言权”, 这两天通过微信小程 ...
- Centos 环境一键部署脚本(shell脚本)
谨以此文纪念吊炸天的Centos环境一键部署方案的新鲜出炉 辛苦大半年,产品准备上线了,BOSS亲自体验安装部署,看着超过200+页的安装文档直接崩溃了(需要部署23个基础服务),经历了超过3个小时的 ...
- 提高java编程质量 - (二)取余用偶判断,不要用奇判断
取余判断原则:取余用偶判断,不要用奇判断 先看一个 程序: package com.test; import java.util.Scanner; public class t1 { public s ...
- idea无法正常使用SVN的解决方法
问题描述: IntelliJ IDEA安装之后,使用SVN进行提交或更新以及检出代码的时候会出现如下错误: Cannot load supported formats: Cannot run prog ...
- FastReport.NET 中使用二维码
FastReport.net 是一个比较好用的报表控件,在编辑器中编辑以后 可以直接在vs 中引用. 最近在研究fastreport 现在讲解一下 如何使用它的二维码. fastreport 没有单独 ...
- cpu-z如何查看电脑配置数据方法介绍
CPU-Z是款经典的内存检测工具,具有5大功能,使用CPU-Z可以查询电脑的处理器.缓存.主板.内存.显卡以及SPD的信息.但是怎么具体看哪一个项目呢?在今天的教程中,小编就跟大家分享一下cpu-z ...
- linux iptables规则介绍
今天又学习了一下iptables,做一点总结来方便以后查阅. Netfilter(网络过滤器)是Linux操作系统核心层内部的一个数据包处理模块,主要负责数据包的拦截和转发,而iptables是Net ...