mybatis
文章平均质量分 82
记录学习mybatis的文章
Eric010101
这个作者很懒,什么都没留下…
展开
-
java web之mybatis(一)-----基础
(1) 基本原理 基本的处理流程 根据配置文件创建session工厂sessionFactory; 由SeesionFactory产生数据库会话session; 通过数据库会话session完成数据库具体的操作,增改查删和事务管理; 处理完后关闭会话session MyBatis功能架构 API接口:由ses...转载 2018-07-25 17:05:46 · 551 阅读 · 1 评论 -
java web之mybatis(二)---初始化
(1) Configuration创建和加载MyBatis的初始化入口是从SqlSeesionFactory的创建开始的,将生成的配置文件输入流传递到SqlSessionBuilder类的build()方法中构建SqlSessionFactory实例String resource = "mybatis/config.xml";InputStream is = Main.class.get...转载 2018-07-25 17:59:34 · 202 阅读 · 0 评论 -
java web之mybatis(三)---Update操作执行流程
(1) 会话Session的创建通过初始化获取的SessionFactory创建会话对象SqlSession session = sessionFactory.openSession(); 调用openSessionFromDataSource()方法执行创建逻辑public SqlSession openSession() { return this.openSessi...转载 2018-07-26 19:06:15 · 1836 阅读 · 0 评论 -
java web之mybatis(四)----Select操作执行流程
Select操作流程(1) 执行查询操作获取sqlSession后,调用selectOne()作为select操作的入口String statement = "mybatis.mapping.userMapper.getUser";User user = session.selectOne(statement,1);selectOne()执行的逻辑是调用selectList()方...转载 2018-07-27 10:42:26 · 793 阅读 · 0 评论 -
java web之mybatis(五)---插件机制
(0) 插件机制 MyBatis允许使用插件拦截具体的方法调用,具体的拦截点包含四类: Executor:update(),query(),flushStatement(),commit(),rollback(),getTransaction(),close(),isClosed()等方法; ParameterHandler:getParameterObject()...转载 2018-07-27 11:06:41 · 175 阅读 · 0 评论 -
java web之mybatis(六)----缓存机制
(0) MyBatis缓存 MyBatis缓存分类 一级缓存:一级缓存是SqlSession级别的缓存,在同一个会话session中对于相同的查询,会从缓存中返回结果而不是查询数据库; 二级缓存:二级缓存是Mapper级别的,定义在Mapper文件中标签并需要开启此标签;多个Mapper文件可以共用一个缓存,依赖标签配置; (1)MyBatis一级缓存...转载 2018-07-27 13:40:23 · 249 阅读 · 0 评论 -
java web之mybatis(七)-----事务
(0) MyBatis事务遇到的问题如果开启MyBatis事务管理,则需要手动进行事务提交,否则事务会回滚到原状态;String resource = "mybatis/config.xml";InputStream is = Main.class.getClassLoader().getResourceAsStream(resource);SqlSessionFactory sess...转载 2018-07-27 14:37:56 · 400 阅读 · 0 评论 -
java web之mybatis(八)----Spring和MyBatis集成
(0) Spring和MyBatis集成实例通过MapperFactoryBean工厂类进行单个配置1.创建Mapper接口有两种方式,可以通过注解@Mapper也可以通过XML配置文件实现通过注解@Mapper实现Dao接口@Mapperpublic interface UserMapper { @Select("select * from user where id=...转载 2018-07-27 16:55:51 · 271 阅读 · 0 评论 -
java web 之mybatis使用教程(一)
1 简介MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,其几乎消除了所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis 应用程序大都使用 SqlSession...原创 2018-07-30 13:32:15 · 3419 阅读 · 0 评论 -
java web 之mybatis使用教程(二)
我们已经初步搭建了 MyBatis 框架,实现了findById功能,接下来继续完善,实现findAll,insert,update,delete功能。目录结构跟上篇一样。更新的文件主要是UserMapper.xml和UserTest.java文件,写完一个接口,再写一个测试接口,测试驱动开发,这种模式简直太美妙了。直接上代码:UserMapper.xml如下:<?xml ...原创 2018-07-30 14:52:45 · 233 阅读 · 0 评论 -
java web 之mybatis使用教程(三)
前两篇文章介绍了mybatis如何使用,这篇文章简单解释下xml文件中各标签的意义。映射文件在此,咱们仅以前两篇博文中的代码为例,给出映射文件 Mapper.xml 的总结:① 设置 namespace 命名空间,目的是为了区分映射文件中的方法;② 结果集 resultMap 是 MyBatis 最大的特色,对象的 ORM 就由其来转换:在结果集中,包括主键 id 和 普通属性...原创 2018-07-30 15:23:28 · 217 阅读 · 0 评论 -
java web 之mybatis使用教程(四)
动态SQL语句条件查询:<!-- 查询功能,parameterType 设置参数类型,resultType 设置返回值类型 --> <select id="findAllByCondition" parameterType="com.cx.pojo.User" resultType="User"> SELECT id,name,age FR...原创 2018-07-30 16:32:45 · 203 阅读 · 0 评论 -
java web 之mybatis使用教程(五)
编写UserMapper接口,不使用DAO类。看一下目录结构:修改namespace为mapper所在包 新建一个UserMapper接口:package com.cx.mapper;import com.cx.pojo.User;import java.util.List;import java.util.Map;public interface Use...原创 2018-07-31 10:20:56 · 263 阅读 · 0 评论 -
java web 之mybatis使用教程(六)
mybatis-config.xml文件解释:配置内容 作用 <properties> 用来加载属性文件 <settings> 用来设置全局参数 <typeAliases> 用来设置类型的别名 <typeHandlers> 用来设置类型处理器 <objectFactory> 用来...原创 2018-07-31 14:20:47 · 291 阅读 · 0 评论 -
java web 之mybatis使用教程(七)
1. 动态sql动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。如:select * from user where user.age= #{user.age} and user.name like '%${user.name}%'假如这个user是null咋整?或者user.age或...原创 2018-07-31 15:22:49 · 240 阅读 · 0 评论 -
java web 之mybatis使用教程(八)
高级映射之一对一查询先建表:/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50721Source Host : localhost:3306Source Database : mybatisdemoTarget Se...原创 2018-08-01 11:29:05 · 194 阅读 · 0 评论 -
java web 之mybatis使用教程(九)
高级映射之一对多查询订单项和订单明细是一对多的关系,所以本文主要来查询订单表,然后关联订单明细表,这样就有一对多的问题出来了。 先写sql语句,主表是订单表,关联表是订单明细表。sql语句如下:SELECT orders.*, user.`name`, user.`age`, orderdetail.`id` orderdetail_id, orderdet...原创 2018-08-01 14:01:34 · 188 阅读 · 0 评论 -
java web 之mybatis使用教程(十)
延迟加载举个例子:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 所以延迟加载即先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。 我们来对比一下:关联查询:SELECT orders.*, user.name FROM orders,...原创 2018-08-01 16:26:32 · 325 阅读 · 0 评论 -
java web 之mybatis使用教程(十一)
逆向工程生成代码1. 什么是逆向工程mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。2. 使用逆向工程通过IDEA新建一个m...原创 2018-08-02 14:08:45 · 272 阅读 · 0 评论 -
java web 之mybatis使用教程(十二)
MyBatis分页插件PageHelper的使用在mysql中,分页的sql是使用limit来做,如果我们自己写sql,那分页肯定是没有任何问题的。但是一旦model多了起来,复杂了起来,我们很自然的想到使用mybatis的逆向工程来生成相应的po和mapper,但是同时也会带来弊端,比如这里的分页问题就不好解决了。 可能有人会说,我可以修改生成的文件,没错,这是可行的,但是一般我们通过...原创 2018-08-02 14:57:06 · 252 阅读 · 0 评论