mybatis中的动态代理应用(mapper对象)
-----------------UserMapper的配置信息---------------------
<?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="com.tabchanj.mybatis.domain.UserMapper">
<resultMap type="com.tabchanj.mybatis.domain.User" id="User"/>
<select id="get" parameterType="Long" resultMap="User">
select * from
t_user
where id = #{id}
</select> <select id="list" resultMap="User">
select * from t_user
</select>
</mapper>
1.将mapper配置文件中的namespace路径作为一个接口的全限定名,即创建一个接口,其全限定名为namespace的名称.
2.该接口的方法名与mapper文件中的sql语句的id名相同,返回值与sql语句的resultType相同,参数类型与paramterType相同,
---------UserMapper接口------------
package com.tabchanj.mybatis.domain; import java.util.List; public interface UserMapper {
User get(Long id); List<User> list();
}
3.使用时,通过 sqlsession对象.getMapper(接口.class)获取到该接口的代理实现类,,可以直接使用该类进行crud,该类可看作是一个Dao.
@Test
public void testName1() throws Exception {
//通过sqlsession获得代理对象(Mapper)
UserMapper mapper = MyBatisUtil.openSession().getMapper(UserMapper.class);
//mapper调用接口中方法,相当于执行了mapper映射文件中的id为get的sql语句
User u = mapper.get(1L);
System.out.println(u + "----------");
//mapper调用接口中方法,相当于执行了mapper映射文件中的id为list的sql语句
List<User> list = mapper.list();
for (User user : list) {
System.err.println(user + "........");
}
}
结果:
mybatis中的动态代理应用(mapper对象)的更多相关文章
- mybatis 05: mybatis中的动态代理
mybatis中动态代理存在的意义 图示 图示分析 分层说明:界面层为第一层,业务逻辑层(接口层 + 实现层)为第二层,数据访问层(接口层 + 实现层)为第三层 业务逻辑层和数据访问层:分别分两层来开 ...
- 通过模拟Mybatis动态代理生成Mapper代理类,讲解Mybatis核心原理
本文将通过模拟Mybatis动态代理生成Mapper代理类,讲解Mybatis原理 1.平常我们是如何使用Mapper的 先写一个简单的UserMapper,它包含一个全表查询的方法,代码如下 pub ...
- 【mybatis深度历险系列】mybatis中的动态sql
最近一直做项目,博文很长时间没有更新了,今天抽空,学习了一下mybatis,并且总结一下.在前面的博文中,小编主要简单的介绍了mybatis中的输入和输出映射,并且通过demo简单的介绍了输入映射和输 ...
- 使用Java中的动态代理实现数据库连接池
2002 年 12 月 05 日 作者通过使用JAVA中的动态代理实现数据库连接池,使使用者可以以普通的jdbc连接的使用习惯来使用连接池. 数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的 ...
- 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
动态Sql是Mybatis的核心,就是对我们的sql语句进行灵活的操作,他可以通过表达式,对sql语句进行判断,然后对其进行灵活的拼接和组装.可以简单的说成Mybatis中可以动态去的判断需不需要某些 ...
- java中的动态代理机制
java中的动态代理机制 在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface).另一个则是 Proxy(Class),这一个类和接口是实现 ...
- Spring AOP中的动态代理
0 前言 1 动态代理 1.1 JDK动态代理 1.2 CGLIB动态代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的过滤功能 2 Spring AOP中的动态代理机制 2.1 ...
- mybatis中的动态SQL
在实际开发中,数据库的查询很难一蹴而就,我们往往要根据各种不同的场景拼接出不同的SQL语句,这无疑是一项复杂的工作,我们在使用mybatis时,mybatis给我们提供了动态SQL,可以让我们根据具体 ...
- 转:Spring AOP中的动态代理
原文链接:Spring AOP中的动态代理 0 前言 1 动态代理 1.1 JDK动态代理 1.2 CGLIB动态代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的过滤功能 2 S ...
随机推荐
- Charles 功能介绍说明和使用教程
https://juejin.im/post/5b8350b96fb9a019d9246c4c http://blog.devtang.com/2015/11/14/charles-introduct ...
- vue路由在keep-alive下的刷新问题
问题描述: 在keep-alive中的在跳转到指定的路由时刷新对应的路由,其余不刷新. <transition name="fade" mode="out-in&q ...
- Tensorflow所遇坑
TensorFlow问题: 1.FLAGS._parse_flags()报错AttributeError:_parse_flags 解决: 因为TensorFlow的版本问题了,TensorFlow版 ...
- nohup及pip命令总结
最近在搭建Python的Web开发环境的时候,用到nohup和pip等一些工具,先简单总结一下,以备后续查用. 1.nohup nohup(no hang up)就是不挂断的意思,如果你正在运行一个进 ...
- Kettle使用教程之Job使用
1.Kettle的Job使用十分简单,这里也只是演示比较简单的操作,创建Job 2.点击转换,然后点击浏览,选择转换对象 3.执行按钮,运行该转换 4.如果需要长期的进行定时转换,可以在Job中的st ...
- Networking 基本术语/概念
目录 文章目录 目录 基本概念 冲突域(Collision Domain) 广播域(Broadcast Domain) 冲突域与广播域的区别 IP 网络数据传输方式 物理网络设备 发展简述 中继器(R ...
- 二十二:视图之add_url_rule和app.route
flask注册视图有两种方式 一:add_url_rule()add_url_rule源码:rule:接口地址view_func=视图函数endpoint=终结点,可以理解为给当前视图取的别名,最直观 ...
- python的dict,set,list,tuple应用详解
python的dict,set,list,tuple应用详解 本文深入剖析了python中dict,set,list,tuple应用及对应示例,有助于读者对其概念及原理的掌握.具体如下: 1.字典(d ...
- springmvc 使用Jackson框架的配置
<!--start:使用Jackson 1.x的配置,需要导入的jar包:jackson-core-lpgl-xxx.jar.jackson-mapper-lgpl-xxx.jar --> ...
- Day02:正则表达式 / Object / 包装类
JAVA正则表达式 实际开发中,经常需要对字符串数据进行一些复杂的匹配,查找,替换等操作. 通过"正则表达式",可以方便的实现字符串的复杂操作. 正则表达式是一串特定字符,组成一个 ...
