![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mybatis
文章平均质量分 72
codingjav
骑马Coding
展开
-
mybatis源码解析 - mapper代理对象的生成
1、简单示例先看一个简单纯粹的mybatis demo(不集成spring等其他框架),代码结构很简单,如下图:完整代码地址:kingoe/boot-study;mapper层和我们平时说的dao层指的是同一个内容,都是数据库操作的封装,但是在没有集成mybatis时,dao层的接口都是需要我们手动去写其实现类,可在上图中我们却发现:我们并没有手动去实现PersonMapper接口,但工程却能实实在在的查询数据库,获取我们需要的数据,debug代码可以发现 PersonMapper实例是一个代.原创 2022-01-22 19:45:55 · 554 阅读 · 0 评论 -
Mybatis面试题-日更
什么是MyBatis的接口绑定?有哪些实现方式?接口绑定,就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。接口绑定有两种实现方式通过注解绑定,就是在接口的方法上面加上 @Select、@Update等注解,里面包含Sql语句来绑定;通过xml里面写SQL来绑定, 在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。当Sql语句比较简单时原创 2021-08-20 00:38:27 · 78 阅读 · 0 评论 -
mybatis 一二级缓存简述
mybatis 为我们提供了一级缓存和二级缓存一级缓存:每个SqlSession中持有了Executor,每个Executor中有一个LocalCache。当用户发起查询时,MyBatis根据当前执行的语句生成MappedStatement,在Local Cache进行查询,如果缓存命中的话,直接返回结果给用户,如果缓存没有命中的话,查询数据库,结果写入Local Cache,最后返回结果给用户。一级缓存配置:<setting name="localCacheScope" val原创 2021-08-20 00:22:01 · 216 阅读 · 0 评论 -
去掉Mybatis Generator生成的一堆 example
mybatis generator自动生成的代码里老是有一堆example,虽然说他封装的东西比较多,但是大部分时候并不会用到。如果需要改的时候,在接口和mapper里修改便是了。配置的方法如下: enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"转载 2016-07-07 17:02:46 · 319 阅读 · 0 评论 -
利用mybatis-generator自动生成代码
mybatis-generator有三种用法:命令行、eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上可以通用。下面是从官网上的截图:(不过官网www.mybatis.org 最近一段时间,好象已经挂了)一、在pom.xml中添加plugin View Code其中gener原创 2016-07-07 16:10:03 · 444 阅读 · 0 评论 -
【SpringMVC整合MyBatis】整合思路与工程结构
springmvc和mybatis整合1.需求使用springmvc和mybatis完成商品列表查询。2.整合思路springmvc+mybaits的系统架构:如图第一步:整合dao层mybatis和spring整合,通过spring管理mapper接口。使用mapper的扫描器自动扫描mapper接口在spring中进行注册。第二步:整原创 2016-07-12 17:36:47 · 697 阅读 · 0 评论 -
【MyBatis框架】SqlMapConfigl配置文件之常用的setting设置
Setting(设置)Description(描述)Valid Values(验证值组)Default(默认值)cacheEnabled在全局范围内启用或禁用缓存配置任何映射器在此配置下。true | falseTRUElazyLoadingEnabled在全局范围内启用或禁用延迟加载。禁用时,所有协会将热加载。true | falseT原创 2016-07-11 11:28:14 · 702 阅读 · 0 评论 -
【MyBatis框架】mybatis逆向工程自动生成代码
逆向工程1.什么是逆向工程mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..)企业实际开发中,常用的逆向工程方式:由于数据库的表生成java代码。2.下载逆向工程mybatis-generator-core-1.3.2-bund原创 2016-07-10 11:12:28 · 575 阅读 · 0 评论 -
MyBatis入门基础(一)
阅读目录一:对原生态JDBC问题的总结二:MyBatis框架三:mybatis入门程序四:mybatis和Hibernate的本质区别与应用场景五:小结回到顶部一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记录原创 2016-06-23 01:57:12 · 428 阅读 · 0 评论 -
mybatis入门基础(二)----原始dao的开发和mapper代理开发
阅读目录一:原始dao开发方法二:mapper代理方法(只需要mapper接口,相当于dao接口) 承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先苦后甜嘛!回到顶部一:原始dao开发方法原创 2016-06-23 02:07:50 · 313 阅读 · 0 评论 -
mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
阅读目录一:SqlMapConfig.xml配置文件的内容和配置顺序如下二:properties属性三:settings全局参数配置四:typeAiases(别名)--重点掌握五:typeHandlers(类型处理器)六:mappers(映射配置)回到顶部一:SqlMapConfig.xml配置文件的内容和配置顺序如下properties(属性)settings原创 2016-06-23 02:13:40 · 412 阅读 · 0 评论 -
mybatis入门基础(四)----输入映射和输出映射
阅读目录一:输入映射 二:输出映射回到顶部一:输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。1.1.传递pojo的包装对象 1.1.1.需求描述 完成用户信息的综合查询,需要传入的查询条件可能很复杂(可能包括用户信息,其它信息,比如,商品,订单等等)。原创 2016-06-23 02:21:03 · 276 阅读 · 0 评论 -
mybatis入门基础(五)----动态SQL
阅读目录一:动态SQL二:SQL片段三:foreach回到顶部一:动态SQL 1.1.定义 mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。 1.2.案例需求 用户信息综合查询列表这个statement的定义使用动态sql,对查询条件进行判断,如果输入参数不为空才进行查询拼接。原创 2016-06-23 02:23:10 · 344 阅读 · 0 评论 -
MyBatis Generator产生的Example类
http://openwares.net/database/mybatis_generator_example.htmlExample类用于构造复杂的筛选条件。基本概念CriterionCriterion是最基本,最底层的Where条件,用于字段级的筛选,feild用于指代字段名字,列举如下:只有一个条件,不需要其他参考值feild IS NOLL转载 2016-07-20 00:14:46 · 564 阅读 · 0 评论 -
Maven+Mybatis+Spring+SpringMVC实现分页
一、项目搭建Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建二、分页插件的介绍博主采用的插件是PageHelper这个插件,使用起来十分方便。该插件支持以下数据库:OracleMysqlMariaDBSQLiteHsqldbPostgreSQLDB2SqlServer(2005+)InformixH2对应于githu原创 2016-09-22 18:10:32 · 2473 阅读 · 0 评论 -
Mybatis There is no getter for property named 'XXX' in 'class java.lang.XXX
Mybatis查询 使用Mybatis查询时,其参数可以是基本数据类型或者像Integer和String这样的简单的数据对象,也可以是复杂对象(一般是指JavaBean)或者map等,当使用基本数据类型的参数时,若这个参数的使用放在了判断条件中,如下查询语句:sql代码: <![CDATA[ SELECT DISTINCT NAME原创 2016-11-04 17:33:47 · 458 阅读 · 0 评论 -
JeeSite 企业信息化快速开发平台
https://github.com/thinkgem/jeesite具体的请查看文档原创 2016-10-15 17:13:30 · 835 阅读 · 0 评论 -
【MyBatis框架】mybatis和spring整合
spring和mybatis整合1.整合思路需要spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)持久层的mapper都需要由spring进行管理。2.整合环境创建一个新的java工程(接近实际开原创 2016-07-10 11:05:17 · 615 阅读 · 0 评论 -
【MyBatis框架】查询缓存-二级缓存-整合ehcache
mybatis整合ehcacheehcache是一个分布式缓存框架。1.分布缓存我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式)如图不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。2.整原创 2016-07-10 10:48:09 · 423 阅读 · 0 评论 -
【MyBatis框架】MyBatis入门程序第一部分
我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis1.需求根据用户id(主键)查询用户信息根据用户名称模糊查询用户信息添加用户删除 用户更新用户mybatis运行环境(jar包):从https://github.com/mybatis/mybatis-3/releases下载,3.2.7版本lib下:依赖包mybatis-3.2原创 2016-07-09 23:48:03 · 454 阅读 · 0 评论 -
【MyBatis框架】MyBatis入门程序第二部分
我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis,接着上一篇继续我们开始实现需求中的添加和删除用户功能(1)向数据库中添加用户数据使用User.xml,加入添加用户的sql语句。[html] view plain copy parameterType:指定输入参数类型是pojo(包括用户信息) #{}中原创 2016-07-10 00:01:03 · 1625 阅读 · 0 评论 -
【MyBatis框架】Mybatis开发dao方法第二部分
下面来继续讨论mybatis开发Dao的方法我们前面使用原始的Dao开发方法,发现了许多弊端,我们下面使用mapper代理来写Dao方法。1.mapper代理方法(程序员只需要mapper接口(相当 于dao接口))开发人员需要先编写Mapper接口(相当 于dao接口),需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。[ja转载 2016-07-10 01:17:26 · 439 阅读 · 0 评论 -
【MyBatis框架】Mybatis开发dao方法第一部分
下面来讨论mybatis开发Dao的方法先来说一下基本架构流程中使用到的几个类1.SqlSession使用范围1.1SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessi转载 2016-07-10 01:05:10 · 455 阅读 · 0 评论 -
【MyBatis框架】SqlMapConfig剖析
下面对SqlMapConfig.xml中的配置进行详细剖析。mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集原创 2016-07-10 09:32:24 · 403 阅读 · 0 评论 -
【Mybatis框架】输入映射-pojo包装类型
下面说说关于mapper.xml文件中的输入映射我们看一下之前为User配置的mapper文件UserMapper.xml:[html] view plain copyxml version="1.0" encoding="UTF-8"?> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"转载 2016-07-10 09:40:06 · 935 阅读 · 0 评论 -
【Mybatis框架】输出映射-resultType与resultMap
输出映射接下来说说有关Mapper.xml配置文件中查询标签中关于返回值类型resultType与resultMap的一些内容1.resultType使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。只要查询出来的列名和pojo中的属性有一个一致,就会转载 2016-07-10 09:43:31 · 1292 阅读 · 0 评论 -
【MyBatis框架】mapper配置文件-关于动态sql
动态sql1.什么是动态sqlmybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。2.需求用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql。对查询条件进行判断,如果输入参数不为空才进行查询条件拼接。3.mapper.xml原查询语句配置:[html] vi转载 2016-07-10 09:49:27 · 550 阅读 · 0 评论 -
【MyBatis框架】mapper配置文件-foreach标签
foreach标签下面介绍一下一个mapper配置文件中的foreach标签(注意,要跟着前面的总结来看,这里使用的例子是结合前面的工程写的,大部分代码没有再赘述)foreach的作用是向sql传递数组或List,mybatis使用foreach解析1.1需求在用户查询列表和查询总数的statement中增加多个id输入查询。sql语句如下:两种方法:S转载 2016-07-10 09:53:18 · 1551 阅读 · 0 评论 -
【MyBatis框架】订单商品数据模型-分析思路
我们接下来要对即将用来实验的订单商品数据模型进行分析。首先在MySql中创建mybatis数据库,在其中创建以下表:[sql] view plain copyCREATE TABLE `items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT原创 2016-07-10 10:17:26 · 853 阅读 · 0 评论 -
【MyBatis框架】高级映射-一对一查询
一对一查询根据上面我们分析的订单商品数据模型(链接:12.订单商品数据模型-分析思路.txt),我们来写一下有关一对一的查询,分别使用了resultType和resultMap指定输出参数类型1.一对一查询使用resultType指定输出参数类型1.1需求查询订单信息,关联查询创建订单的用户信息1.2resultType1.2.1sql语句确定查询的原创 2016-07-10 10:21:18 · 437 阅读 · 0 评论 -
【MyBatis框架】高级映射-一对多查询
前面学习了一对一的查询,现在我们在刚才的数据模型基础上进行一对多的查询。一对多查询1.需求查询订单及订单明细的信息。2.sql语句确定主查询表:订单表确定关联查询表:订单明细表在一对一查询基础上添加订单明细表关联即可。[sql] view plain copySELECT orders.*,转载 2016-07-10 10:28:23 · 450 阅读 · 0 评论 -
【MyBatis框架】高级映射-多对多查询
多对多查询1.需求查询用户及用户购买商品信息。2.sql语句查询主表是:用户表关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders、orderdetail、items[sql] view plain copySELECT orders.*, USER.usern转载 2016-07-10 10:32:25 · 355 阅读 · 0 评论 -
【MyBatis框架】配置文件-resultMap总结
resultMap总结resultType:作用:将查询结果按照sql列名pojo属性名一致性映射到pojo中。场合:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。resultMap:使用association和co原创 2016-07-10 10:34:17 · 481 阅读 · 0 评论 -
【MyBatis框架】高级映射-延迟加载
延迟加载1.什么是延迟加载resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。延迟加载:先从单表查询、原创 2016-07-10 10:39:18 · 402 阅读 · 0 评论 -
【MyBatis框架】查询缓存-一级缓存原理
查询缓存1.什么是查询缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。缓存模式图如图一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap原创 2016-07-10 10:43:36 · 342 阅读 · 0 评论 -
【MyBatis框架】查询缓存-二级缓存原理
二级缓存原理1.原理首先看图首先开启mybatis的二级缓存。sqlSession1去查询用户id为1的用户信息,查询到用户信息会将查询数据存储到二级缓存中。如果SqlSession3去执行相同 mapper下sql,执行commit提交,清空该 mapper下的二级缓存区域的数据。sqlSession2去查询用户id为1的用户信息,去缓原创 2016-07-10 10:46:10 · 519 阅读 · 0 评论 -
【MyBiatis框架】原生态Jdbc的弊端已经Mybatis简介
我们使用JSP+Servlet做Web应用的时候经常使用JDBC作为数据库的连接,直接使用jdbc操作数据库进行增删改查等操作时会有一定的弊端,所以衍生出了hibernate、MyBatis等一系列优秀的ORM框架,我们来看看原生态jdbc编程中的问题总结:1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。2、将sql语句硬原创 2016-07-09 19:41:23 · 1214 阅读 · 0 评论