MyBatis框架
光仔December
技术宅,系统集成项目管理工程师,FCP-报表开发工程师,全国软件开发(C/C++)专业人才高级认证,2014年ACM-ICPC河南省赛区银奖,2014年第五届蓝桥杯河南赛区C/C++程序设计本科B组二等奖,2015年甲骨文杯全国Java程序设计大赛华中赛区A组二等奖,2015年中国大学生计算机设计大赛团队三等奖
展开
-
【MyBatis框架】mapper配置文件-关于动态sql
动态sql1.什么是动态sqlmybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。2.需求用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql。对查询条件进行判断,如果输入参数不为空才进行查询条件拼接。3.mapper.xml原查询语句配置: <!-- 用户信息综合原创 2015-06-21 12:23:03 · 6538 阅读 · 1 评论 -
【MyBatis框架】查询缓存-二级缓存-整合ehcache
mybatis整合ehcacheehcache是一个分布式缓存框架。1.分布缓存我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式)如图不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。2.整合方法(原创 2015-07-07 19:25:39 · 4025 阅读 · 0 评论 -
【Mybatis框架】输入映射-pojo包装类型
下面说说关于mapper.xml文件中的输入映射我们看一下之前为User配置的mapper文件UserMapper.xml:<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空间,作用就原创 2015-06-15 22:58:32 · 9790 阅读 · 4 评论 -
【MyBatis框架】Mybatis开发dao方法第二部分
下面来继续讨论mybatis开发Dao的方法我们前面使用原始的Dao开发方法,发现了许多弊端,我们下面使用mapper代理来写Dao方法。1.mapper代理方法(程序员只需要mapper接口(相当 于dao接口))开发人员需要先编写Mapper接口(相当 于dao接口),需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。package cn.edu.hpu.myba...原创 2015-06-14 06:15:29 · 5584 阅读 · 3 评论 -
【MyBatis框架】SqlMapConfig剖析
下面对SqlMapConfig.xml中的配置进行详细剖析。mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集原创 2015-06-14 06:20:31 · 2615 阅读 · 0 评论 -
【Mybatis框架】输出映射-resultType与resultMap
输出映射接下来说说有关Mapper.xml配置文件中查询标签中关于返回值类型resultType与resultMap的一些内容1.resultType使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。只要查询出来的列名和pojo中的属性有一个一致,就会原创 2015-06-15 23:07:18 · 22591 阅读 · 13 评论 -
【MyBatis框架】查询缓存-二级缓存原理
二级缓存原理1.原理首先看图首先开启mybatis的二级缓存。sqlSession1去查询用户id为1的用户信息,查询到用户信息会将查询数据存储到二级缓存中。如果SqlSession3去执行相同 mapper下sql,执行commit提交,清空该 mapper下的二级缓存区域的数据。sqlSession2去查询用户id为1的用户信息,去缓存中找是原创 2015-07-07 19:18:43 · 4930 阅读 · 8 评论 -
【MyBatis框架】mybatis和spring整合
spring和mybatis整合1.整合思路需要spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)持久层的mapper都需要由spring进行管理。2.整合环境创建一个新的java工程(接近实际开原创 2015-07-16 09:33:42 · 3667 阅读 · 3 评论 -
【MyBatis框架】mybatis逆向工程自动生成代码
逆向工程1.什么是逆向工程mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..)企业实际开发中,常用的逆向工程方式:由于数据库的表生成java代码。2.下载逆向工程mybatis-generator-core-1.3.2-bund原创 2015-07-16 09:38:59 · 21585 阅读 · 16 评论 -
【MyBatis框架】SqlMapConfigl配置文件之常用的setting设置
Setting(设置)Description(描述)Valid Values(验证值组)Default(默认值)cacheEnabled在全局范围内启用或禁用缓存配置任何映射器在此配置下。true | falseTRUElazyLoadingEnabled在全局范围内启用或禁用延迟加载。禁用时,所有协会将热加载。true | falseT原创 2015-07-16 09:41:23 · 2572 阅读 · 0 评论 -
【MyBatis框架】查询缓存-一级缓存原理
查询缓存1.什么是查询缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。缓存模式图如图一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相原创 2015-06-30 16:52:34 · 2411 阅读 · 0 评论 -
【MyBatis框架】Mybatis开发dao方法第一部分
下面来讨论mybatis开发Dao的方法先来说一下基本架构流程中使用到的几个类1.SqlSession使用范围1.1SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessi原创 2015-06-11 11:39:02 · 4815 阅读 · 0 评论 -
【MyBatis框架】MyBatis入门程序第二部分
我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis,接着上一篇继续我们开始实现需求中的添加和删除用户功能(1)向数据库中添加用户数据使用User.xml,加入添加用户的sql语句。<!-- 添加用户parameterType:指定输入参数类型是pojo(包括用户信息) #{}中指定POJO的属性名,接收到POJO对象的属性值,mybatis通过OGNL原创 2015-06-11 11:35:44 · 2417 阅读 · 1 评论 -
【MyBatis框架】mapper配置文件-foreach标签
foreach标签下面介绍一下一个mapper配置文件中的foreach标签(注意,要跟着前面的总结来看,这里使用的例子是结合前面的工程写的,大部分代码没有再赘述)foreach的作用是向sql传递数组或List,mybatis使用foreach解析1.1需求在用户查询列表和查询总数的statement中增加多个id输入查询。sql语句如下:两种方法:S原创 2015-06-21 12:28:26 · 15211 阅读 · 3 评论 -
【MyBatis框架】高级映射-一对一查询
一对一查询根据上面我们分析的订单商品数据模型(链接:12.订单商品数据模型-分析思路.txt),我们来写一下有关一对一的查询,分别使用了resultType和resultMap指定输出参数类型1.一对一查询使用resultType指定输出参数类型1.1需求查询订单信息,关联查询创建订单的用户信息1.2resultType1.2.1sql语句确定查询的原创 2015-06-23 09:50:54 · 1927 阅读 · 5 评论 -
【MyBatis框架】订单商品数据模型-分析思路
我们接下来要对即将用来实验的订单商品数据模型进行分析。首先在MySql中创建mybatis数据库,在其中创建以下表:CREATE TABLE `items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL COMMENT '商品名称', `price` float(10,1) NOT N原创 2015-06-23 09:43:22 · 3058 阅读 · 4 评论 -
【MyBatis框架】高级映射-一对多查询
前面学习了一对一的查询,现在我们在刚才的数据模型基础上进行一对多的查询。一对多查询1.需求查询订单及订单明细的信息。2.sql语句确定主查询表:订单表确定关联查询表:订单明细表在一对一查询基础上添加订单明细表关联即可。SELECT orders.*, USER.username, USER.sex, USER.address, or原创 2015-06-26 09:28:29 · 2009 阅读 · 3 评论 -
【MyBatis框架】高级映射-多对多查询
多对多查询1.需求查询用户及用户购买商品信息。2.sql语句查询主表是:用户表关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders、orderdetail、itemsSELECT orders.*, USER.username, USER.sex, USER.address, orderdetail.id原创 2015-06-26 09:32:25 · 5669 阅读 · 0 评论 -
【MyBatis框架】MyBatis入门程序第一部分
我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis1.需求根据用户id(主键)查询用户信息根据用户名称模糊查询用户信息添加用户删除 用户更新用户mybatis运行环境(jar包):从https://github.com/mybatis/mybatis-3/releases下载,3.2.7版本lib下:依赖包mybatis-3.2原创 2015-06-07 13:33:20 · 3036 阅读 · 12 评论 -
【MyBiatis框架】Jdbc的弊端探讨和MyBiatis框架的简介
我们使用JSP+Servlet做Web应用的时候经常使用JDBC作为数据库的连接,那么,直接使用JDBC操作数据库进行增删改查是有一定弊端的,正因为如此才衍生出了Hibernate、MyBatis等一系列优秀的ORM框架,我们来看看原生态jdbc编程中的问题总结:1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。设想:使用数原创 2015-06-07 11:14:23 · 4174 阅读 · 5 评论 -
【MyBatis框架】高级映射-延迟加载
延迟加载1.什么是延迟加载resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。延迟加载:先从单表查询、原创 2015-06-30 15:18:43 · 5840 阅读 · 3 评论 -
【MyBatis框架】配置文件-resultMap总结
resultMap总结resultType:作用:将查询结果按照sql列名pojo属性名一致性映射到pojo中。场合:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。resultMap:使用association和co原创 2015-06-30 15:13:00 · 2147 阅读 · 0 评论 -
【SpringMVC整合MyBatis】提供学习参考的项目源码
最近很多博友私信向我索要此开发专栏的源代码,为了发挥开源精神,我决定将《MyBatis+SpringMVC》专栏所有源代码工程公布给大家,供大家学习参考!共享的源代码分别是,MyBatis单独的工程,SpringMVC单独的工程,Spring与MyBatis整合的工程,SpringMVC与MyBatis整合的工程。另外感谢光临博客,祝大家学习愉快源代码链接地址:https://pan.baidu....原创 2015-08-21 11:34:05 · 2695 阅读 · 8 评论