Mybatis原始执行方式Executor代码实例
一、通过SqlSessionFactory创建sqlsession,再由Sqlsession获取session对象,然后通过session中的执行器Executor,去执行MapperStatement封装的sql语句
@Test public void findAll() throws IOException { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建 SqlSessionFactory 的构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使用构建者创建工厂对象 SqlSessionFactory SqlSessionFactory factory = builder.build(in); //4.使用 SqlSessionFactory 生产 SqlSession 对象 SqlSession session = factory.openSession(); List<User> users = session.selectList("findAll"); /* //5.使用 SqlSession 创建 dao 接口的代理对象(接口绑定原理使用的jdk动态代理) UserDao userDao = session.getMapper(UserDao.class); //6.使用代理对象执行查询所有方法 List<User> users = userDao.findAll(); */ for (User user : users) { System.out.println(user); } //7.释放资源 session.close(); in.close(); }
二、执行器Executor的分类
- SimpleExecutor:默认的Executor,每个SQL执行时都会创建新的 Statement,继承了
- BaseExecutor
- CachingExecutor:可缓存数据的Executor,用于二级缓存的执行器
- BatchExecutor:用于批处理的Executor
- ReuseExecutor:相同的SQL会服用的Statemen
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Mybatis中SqlSession下的四大对象之执行器(executor)
首先我先解释一下标题 四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象.(为了方便下面的文章说道四大对象就专指它们) 它们都是sqlSession的底层类实现,也是插件能够拦截的四大对象.所以这里已经触及了MyBATIS的底层,动态代理,反射随时可以看到,如果没有第一篇作为基础,你将十分难以理解它.了解他们的协作,是插件编写的基础之一,所以这是十分的重要. Executor在sqlSession中的应用 上篇我们
-
MyBatis 源码分析 之SqlSession接口和Executor类
mybatis框架在操作数据的时候,离不开SqlSession接口实例类的作用.可以说SqlSession接口实例是开发过程中打交道最多的一个类.即是DefaultSqlSession类.如果笔者记得没有错的话,早期是没有什么getMapper方法的.增删改查各志有对应的方法进行操作.虽然现在改进了很多,但是也保留了很多.我们依旧可以看到类似于selectList这样子的方法.源码的例子里面就可以找到.如下 SqlSession session = sqlMapper.openSession(T
-
mybatis源码解读之executor包懒加载功能
ProxyFactory是创建代理类的工厂接口,其中的setProperties方法用来对工厂进行属性设置,但是mybatis内置的两个实现类都没有实现该接口,所以不支持属性设置.createProxy方法用来创建一个代理对象 public interface ProxyFactory { // 设置工厂属性 default void setProperties(Properties properties) { } // 创建代理对象 Object createProxy(O
-
mybatis源码解读之executor包语句处理功能
1.mybatis对多语句类型的支持 在mybatis映射文件中传参数,主要用到#{} 或者 ${}. #{}:表示使用这种符号的变量会以预编译的形式赋值到sql片段中. ${}:表示使用这种符号的变量会以字符串的形式直接插到sql片段中. mybatis中支持三种语句类型,不同语句类型支持的变量符号不同.mybatis的三种类型如下: STATEMENT:这种语句类型中,只会对sql片段进行简单的字符串拼接.只支持使用${}. PREPARED:这种语句中会先对sql片段进行字符串拼接,然后再
-
Mybatis原始执行方式Executor代码实例解析
一.通过SqlSessionFactory创建sqlsession,再由Sqlsession获取session对象,然后通过session中的执行器Executor,去执行MapperStatement封装的sql语句 @Test public void findAll() throws IOException { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建
-
Mybatis原始执行方式Executor代码实例
一.通过SqlSessionFactory创建sqlsession,再由Sqlsession获取session对象,然后通过session中的执行器Executor,去执行MapperStatement封装的sql语句 @Test public void findAll() throws IOException { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建
-
mybatis insert返回主键代码实例
这篇文章主要介绍了mybatis insert返回主键代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作. 使用ibatis的selectKey就可以得到sequence的值,同时也会将值返回.不过对于不同的数据库有不同的操作方式. 对于oracle: <insert id="
-
MyBatis缓存实现原理及代码实例解析
一.一级缓存(本地缓存) sqlSession级别的缓存.一级缓存是一直开启的:SqlSession级别的一个Map与数据库同一次会话期间查询到的数据会放在本地缓存中.以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库: 一级缓存失效情况(没有使用到当前一级缓存的情况,效果就是,还需要再向数据库发出查询): 1.sqlSession不同 2.sqlSession相同,查询条件不同.(当前一级缓存中还没有这个数据) 3.sqlSession相同,两次查询之间执行了增删改操作(这次增删
-
MyBatis执行Sql的流程实例解析
这篇文章主要介绍了MyBatis执行Sql的流程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本博客着重介绍MyBatis执行Sql的流程,关于在执行过程中缓存.动态SQl生成等细节不在本博客中体现,相应内容后面再单独写博客分析吧. 还是以之前的查询作为列子: public class UserDaoTest { private SqlSessionFactory sqlSessionFactory; @Before public v
-
Mybatis结果集自动映射的实例代码
在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在<select>语句上指定resultType.这个时候其实就用到了Mybatis的结果集自动映射.Mybatis的自动映射默认是开启的,有需要我们也可以将其关闭(还可以调整自动映射的策略). 1 Mybatis结果集自动映射 在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在<select>语句上指定resultType.这个时候其实就用到了Mybatis的结果集
-
SpringBoot+MyBatis简单数据访问应用的实例代码
因为实习用的是MyBatis框架,所以写一篇关于SpringBoot整合MyBatis框架的总结. 一,Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:
-
IDEA Maven Mybatis generator 自动生成代码(实例讲解)
IDEA Maven Mybatis generator 自动生成代码的实例讲解 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` varchar(100) NOT NULL, `username` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT
-
Java线程之锁对象Lock-同步问题更完美的处理方式代码实例
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程之线程同步synchronized和volatile详解中的一个例子简单的实现一下和sychronized一样的效果,代码如下: public class LockTest { public static void main(String[] args) { final Output
-
springboot使用事物注解方式代码实例
这篇文章主要介绍了springboot使用事物注解方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 1.在启动类Application中添加注解@EnableTransactionManagement import tk.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springfra
随机推荐
- 浏览器的JavaScript引擎的识别方法
- 在Python中使用HTMLParser解析HTML的教程
- jQuery解析返回的xml和json方法详解
- Extjs EditorGridPanel中ComboBox列的显示问题
- JS实现最简单的冒泡排序算法
- js DOM 元素ID就是全局变量
- 使用MongoDB分析Nginx日志的方法详解
- 学习javaweb如何配置Tomcat的热启动
- java实现将汉语转换为拼音功能
- 简单谈谈Python中函数的可变参数
- .NET异步编程总结----四种实现模式代码总结
- PHP二维数组排序的3种方法和自定义函数分享
- javascript学习基础笔记之DOM对象操作
- c#编写的番茄钟倒计时器代码
- jQuery EasyUI学习教程之datagrid点击列表头排序
- Bootstrap DateTime Picker日历控件简单应用
- Android中数据库常见操作实例分析
- c#文档图片自动纠偏
- Android实现图片点击预览效果(zoom动画)
- php目录管理函数小结