获取MyBatis】的更多相关文章

点击:获取MyBatis https://github.com/mybatis/mybatis-3/releases 点击:进入中文MyBatis的说明文档 http://www.mybatis.org/mybatis-3/zh/getting-started.html…
现在AOP的场景越来越多,所以我们有必要理解下和AOP相关的一些概念和机制. import org.aspectj.lang.reflect.SourceLocation; public interface JoinPoint { String toString(); //连接点所在位置的相关信息 String toShortString(); //连接点所在位置的简短相关信息 String toLongString(); //连接点所在位置的全部相关信息 Object getThis(); /…
主要就是在xml文件中的写法,其他省略 方法一: <insert id="insert" parameterType="com.xxx.xxxx.pojo.User"> insert into t_user (name) values (#{user.name}) <selectKey resultType="Integer" order="AFTER" keyProperty="user.user…
场景:插入数据的时候,获取不到非自增的主键.原因:对象中没有主键的值,插入后主键才有值. 解决方案:使用 @SelectKey @SelectKey中: statement是要运行的SQL语句,即查询最新一行数据的主键 keyProperty表示查询结果赋值给哪个属性,即主键 resultType 表示返回的id的Java类型,即String before表示查询语句statement运行的时机,即插入数据后查询…
返回主键值的insert操作 应用背景 图示说明 在上述业务背景下,涉及两张数据表的关联操作:用户表 + 用户积分表 传统操作:在对用户表执行完插入语句后,再次查询该用户的uid,将该uid作为外键,最后插入积分数据到用户积分表 数据库操作次数:3次 优化操作:在对用户表执行完插入语句后返回该用户的主键uid,将该uid作为外键,再插入用户积分数据到用户积分表 数据库操作次数:2次 优化操作可以减少对数据库的操作次数 代码实现 UsersMapper.java接口 package com.exa…
Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. 项目中使用mabatis只需要引入mybatis-3.4.1.zip包,或添加maven dependency如下 <dependency> &l…
最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, 好啦,鄙人不喜欢口水话,还是直接上干活吧: 1. SqlSessionFactory 与 SqlSession. 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,咱们都是通过SqlSession去执行sql语句(注意:是从表面看,…
(补充知识点: 1 byte(字节)=8 bit(位) 通常一个标准英文字母占一个字节位置,一个标准汉字占两个字节位置:字符的例子有:字母.数字系统或标点符号) 1.创建SqlSessionFactory ①Reader reader = Resources.getResourceAsReader("mybatis-config.xml");                       //获取mybatis配置文件的字符 注解:Resources类是在mybatis中定义的一个类:g…
MyBatis是一个混合型解决方案.它汲取了所有这些解决方案中最有价值的思想并将它们融会贯通.下表总结了MyBatis从我们之前讨论的那些方案中所汲取的思想. 方 案 相同的优点 解决的问题 存储过程 MyBatis对SQL进行了封装和外部化,使SQL从你 的应用程序代码中分离出来.MyBatis具有与存储 过程相似的API,但MyBatis的这些API是面向对象 的.MyBatis也完全支持对存储过程的直接调用 业务逻辑从数据库中分离出来,应用程序更容易部署与测试,也具有更好的可移植性 内联S…
作为ORM的重要框架,MyBatis是iBatis的升级版.Mybatis完全将SQL语句交给编程人员掌控,这点和Hibernate的设计理念不同(至于Hibernate的理念,待我先学习学习). 下面的教程,是一个基于STS(也可以是eclipse,需要事先安装好maven)的一个入门级教程.下文分为两个部分,第一部门为简单版教程,第二部分是step-by-step教程. Part one 简单教程: 新建maven工程. 添加mybatis和mysql包,以及log4j的包. 新建或者使用现…
一.MyBatis简介    一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate.Hibernate作为一个著名的框架,功能十分强大.我们只需要配置好实体类和数据表之间的关系,Hibernate就会自动帮我们完成生成并执行SQL语句,映射结果集这样的工作.但是也正是由于Hibernate如此强大的功能,导致了它的缺点:一是非常笨重,启动Hibernate的SessionFactory非常耗时,开销巨大:二是配置复杂,学习成本较高,系统调优也不容易:三是自定义查询功能较弱,查询结果…
在大学写web应用的时候经常会遇到这么个问题,当我要插入一条数据,某个数据是Date类型,数据库中却是VARCHAR类型,这个时候可能会傻乎乎的先把这个数据自己手动转换成String类型再插入到数据库中,其实大可不必.MyBatis为我们提供了更好的方法即是TypeHandler来应对Java和jdbc字段类型不匹配的情况.MyBatis中内置了不少的TypeHandler,如果我们想要自己自定义一个TypeHandler可以实现TypeHandler接口,也可以继承BaseTypeHandle…
关于在MyBatis中的ObjectFactory有什么用,在官方文档中有这样的描述(大多数网上的博客都是直接引用这一描述):MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成. 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化. 如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现.对于像我这种水平的来说,完全就是一脸蒙逼,这到底有啥用?可以说这个对象工厂就是用来…
MyBatis的Configuration配置中有一个Plugin配置,根据其名可以解释为"插件",这个插件实质可以理解为"拦截器"."拦截器"这个名词不陌生,在众多框架中均有"拦截器".这个Plugin有什么用呢?活着说拦截器有什么用呢?可以想想拦截器是怎么实现的.Plugin用到了Java中很重要的一个特性--动态代理.所以这个Plugin可以理解为,在调用一个方法时,我"拦截"其方法做一些我想让它做的…
鉴别器(discriminator)是MyBatis为我们提供的第三个级联也是最后一个.基于之前两篇级联中的场景,现增加学生们去体检,但男女体检项目不一样,我们把男女体检表做成两张表,当然我想也可以设计为一张表,只有女生的项目男生不填就行了,为了讲解鉴别器就把男女体检表分开.鉴别器的作用在这里就是根据性别的不同去不同的表里进行查询体检情况,例如是男生就在男生体检表里查询,是女生就在女生体检表里查询. POJO类我们也分为了男生.女生,他们分别继承之前的Student类. MaleStudent类…
上次我们讲到了MyBatis的一对一关系的表示,简单回顾一下一对一关系就是一个学生只有一个学生证.那么什么是一对多关系呢?一个学生有多个课程这就是一对多的关系.我们结合上一章中的学生和学生证,在此基础上新增一个课程表和课程成绩表.学生对应课程表是一对多的关系,在学生确定的情况下课程表对应课程成绩是一对一的关系.我们先来看看我们所假设的场景数据结构的设计. 数据库的ER图如下(因为对数据库还处于菜鸟阶段--所以可能ER图绘制有误,但不影响我们讲解MyBatis一对多关系的级联): 再看看数据库的物…
上面2章写了mybatis的基本操作,今天就写写mybatis的动态代理吧. 动态代理有4个基本原则: 1.userMapper.xml里面的namespace="cn.my.dao.UserDaoMapper"一定要和接口的包名+接口名一致 2.userMapper.xml里面的statementid值要和接口中的方法名一致 3.userMapper.xml里面的入参类型要和接口中方法的参数类型一致 4.userMapper.xml里面的返回类型要和接口中方法的返回类型一致 好了不废…
今天写写user表和orders表的mybatis的高级映射,一对一映射和一对多映射 1.创建一个orders.java文件 1.1一对一映射,一条订单对应一个用户 package cn.my.mybatis.entity; import java.util.Date; public class Orders { private int id; private int user_id; private String number; private Date createtime; private…
#{}和${}的区别 #{}是预编译处理,${}是字符串替换. Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值: Mybatis在处理${}时,就是把${}替换成变量的值.使用#{}可以有效的防止SQL注入,提高系统安全性. 当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定pojo 通过在查询的sql语句中定义字段名的别名 通过 模糊查询like语句该怎么写 在java中拼接通配符,通过#{}赋值 在Sql…
背景 作为软件系统开发,数据操作是系统开发不可避免的一个重要组成部分.因为其重要性围绕着数据操作也出现了众多框架.成熟框架是为了普适众多数据操作要求的,因此为了更好的实现技术落地,需要对框架进行丰富和裁剪,适应公司业务及技术需求.本文将结合MyBatis框架进行数据服务系统设计. 结合现有的系统开发,实现一次数据操作需要有以下组成部分: 定义Controller 定义Menager 定义Service 定义Entity 定义Mapper.xml 对应一个数据操作接口,就需要定义4个方法以及1个S…
前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口就可以了就可以了,这个是最简单了,不废话了直接贴代码了 1.首先创建一个BaseDao package cn.my.dao; import java.util.List; /** * 将公用方法提取出来 * @author Administrator * * @param <T> */ publi…
mybatis动态标签<where><if><foreach>以及sql片段 1.创建一个包装类UserQueryVo.java package cn.my.mybatis.entity; public class UserQueryVo { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } } 2.…
FreeMarker 生成Java.mybatis文件 将mysql数据库表通过FreeMarker生成对应的Java文件和对应的mybatis文件. FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件. FreeMarker是免费的,基于Apache许可证2.0版本发布.其模板编写为FreeMarker Templ…
在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程 1. SqlSessionFactory 与 SqlSession. 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,咱们都是通过SqlSession去执行sql语句(注意:是从表面看,实际的待会儿就会讲).那么咱们就先看看是怎么获取SqlSession的吧: (1)首先,SqlSessionFactoryBu…
JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署 第三篇:JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC) 第四篇:JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven.SpringMVC.Spri…
转载请注明出处... 一.前言 在先了解mybatis查询之前,先大致了解下以下代码的为查询做了哪些铺垫,在这里我们要事先了解,myabtis会默认使用DefaultSqlSessionFactory作为sqlSessionFactory的实现类,而sqlSession的默认实现类为DefaultSqlSession public static SqlSessionFactory getSessionFactory() throws IOException { Reader reader = R…
1.先看一个mybatis最简单的Demo String resource = "mybatis-config.xml"; //1.流形式读取mybatis配置文件 InputStream stream = Resources.getResourceAsStream(resource); //2.通过配置文件创建SqlSessionFactory SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().buil…
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] [Mybatis 系列7-结合源码解析核心CRUD配置及用法] [Mybatis 系列6-结合源码解析节点配置objectFactory.databaseIdProvider.plugins.mappers] [Mybatis 系列5-结合源码解析TypeHandler] [Mybatis 系列4-…
到目前为止,我们已经学习了如何使用Blueprint將Spring框架整合到OSGI应用中,并学习了Blueprint&Gemini Blueprint的一些使用细节.本篇文章开始,我们將Mybatis框架整合到OSGI应用中. 一.获取Mybatis框架Bundle Mybatis框架的Bundle获取比较简单,因为Mybatis框架在发布Release版本时就考虑到用户可能会在OSGI应用中使用Mybatis,所以从官方地址下载得到的Jar包本身就是一个Bundle,MANIFEST.MF文…
学习框架一个比较好的路径阅读源码.本文介绍的SqlSessionFactory和SqlSession.可以通过了解SqlSessionFactory接口和SqlSession接口以及两个的实现类入手,去看源码了解实现过程.最好能把项目下载到本地,慢慢分析实现过程. Myabtis官网:http://www.mybatis.org/ github地址:https://github.com/mybatis/mybatis-3 MyBatis的持久化解决方案是将用户从原始的JDBC访问中解放出来,用户…