mybatis动态sql

java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

人走茶凉 提交于 2019-12-16 21:56:14
第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架   框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。 简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 1.1.2 框架要解决的问题   框架要解决的最重要的一个问题是技术整合的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的 软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技 术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设 计和具体的实现技术解耦。这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应 用的底层支撑,它不应该直接对应用产生影响。   框架一般处在低层应用平台(如 J2EE)和高层业务逻辑之间的中间层。 1.1.3 软件开发的分层重要性   框架的重要性在于它实现了部分功能,并且能够很好的将低层应用平台和高层业务逻辑进行了缓和。为了实现 软件工程中的“高内聚、低耦合”。把问题划分开来各个解决,易于控制

从零开发一个Java Web项目要点

*爱你&永不变心* 提交于 2019-12-16 16:04:53
作者:Java团长 第一部分:环境准备 1. Maven命令创建web骨架 mvn archetype:create -DgroupId=net.rocketa -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp 注意web servlet版本(web.xml,3.1),Junit版本指定为4.X(这样Spring好通过注解的方式来运行单元测试) 2. 注意在IDEA中需要设置好MAVEN工程的 Sources/Tests/Resources/Test Resources 属性。 3. 日志依赖 slf4j:规范和接口 具体的日志实现有: log4j、logback、common-logging 因此我们一般是使用slf4j接口+一种具体的日志实现+slf4j和这个具体日志实现的依赖整合 4. 数据库依赖 有2个依赖,需要注意,一个是 驱动 ,一个是 数据库连接池 (C3P0,DBCP...)。 驱动JAR包是运行期需要包含,编译期不需要的。 5. 持久层框架依赖 说白了,DAO层的框架依赖:MyBatis or Hibernate or .... 比如除MyBatis本身的依赖需要引入之外,还需要引入MyBatis和Spring的整合依赖。 6. Web层依赖 比如,JSP中使用到的一些 JSTL

JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

感情迁移 提交于 2019-12-16 15:51:22
  系列博文:       JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一     传送门     JavaWeb_(Mybatis框架)使用Mybatis对表进行增、删、改、查操作_二       传送门     JavaWeb_(Mybatis框架)Mapper动态代理开发_三                 传送门     JavaWeb_(Mybatis框架)主配置文件介绍_四                   传送门     JavaWeb_(Mybatis框架)输入和输出参数_五                   传送门     JavaWeb_(Mybatis框架)关联查询_六传送门                    传送门     JavaWeb_(Mybatis框架)动态sql_七传送门                    传送门   准备数据库       /* SQLyog Professional v12.08 (64 bit) MySQL - 5.5.49 : Database - ssm_mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 *

Dynamic SQL

北慕城南 提交于 2019-12-14 16:24:35
MyBatis 最强大的特性之一是它的动态 SQL。如果你用过 JDBC 或其他类似的框架,你就知道根据不同条件拼接 SQL 语句有多痛苦了,比如不能忘记空格或要去掉最后一个列后面的逗号。动态 SQL 可以完全摆脱这种痛苦。 如果你使用过 JSTL 或任何类似的基于 XML 的文本处理器,那么动态 SQL 元素对你来说一点也不陌生。在 MyBatis 之前的版本中,有很多的元素需要去学习和理解。MyBatis 3 很大程度上优化了这一点,现在只需要使用比之前少于一半的元素。 Dynamic SQL if < select id = "findActiveBlogWithTitleLike" resultType = "Blog" > SELECT * FROM BLOG WHERE state = ‘ACTIVE’ < if test = "title != null" > AND title like # { title } < / if > < / select > 这个语句提供了一种可选的查找文本功能。如果你没有传进来一个 title,那么所有 ‘ACTIVE’ 状态的 Blog 都会被返回。如果你传入了一个 title,那么它会模糊查找匹配 title 的(细心的读者可能会发现,你的参数值需要包含一些掩码或通配符)。 choose, when, otherwise

MyBatis动态SQL语句

时光总嘲笑我的痴心妄想 提交于 2019-12-14 04:22:47
MyBatis动态sql 动态sql中主要有四个标签 if trim choose foreach if标签过于简单,这里就不介绍了 trim标签的使用 trim是一个sql语句格式化的标记,可以对sql语句进行完美的拼接 select语句中trim的使用 select * from user < trim prefix = "where" prefixoverride = "and | or" > < if test = "id!=null" > and id = #{id}</if> < / trim > 上述sql语句拼接的结果:假使传入的参数id不为null,那么sql语句为 select * from user where id = #{id} 假使id为null,那么就变成了 select * from user ; 在trim标签中, 参数 prefix指的是前缀 prefixoverride表示去除多余的前缀(这里去除的是多余的and|or) 因此在最后的sql语句中不会出现and update语句中trim的使用 update user < trim prefix = "set" suffixoverride = "," suffix = "where id=#{id}" > < if test = "name!=null and name.length()>0"

动态sql之mybatis

◇◆丶佛笑我妖孽 提交于 2019-12-11 18:27:53
prefix:在trim标签内sql语句加上前缀。 suffix:在trim标签内sql语句加上后缀。 suffixOverrides:指定去除多余的后缀内容, suffixOverrides=",",代表去除trim标签内sql语句多余的后缀","。 prefixOverrides:指定去除多余的前缀内容 例子: < insert id = "addUser" parameterType = "com.example.crud.entity.Myuser" > insert into myuser < trim prefix = "(" suffix = ")" suffixOverrides = "," > < if test = "username!=null" > username , < / if > < if test = "password!=null" > password , < / if > < if test = "name!=null" > name , < / if > < if test = "classNum!=null" > classNum , < / if > < / trim > < trim prefix = "values(" suffix = ")" suffixOverrides = "," > < if test =

MyBatis-动态SQL

前提是你 提交于 2019-12-11 17:56:39
MyBatis-动态SQL if choose(when,otherwise) trim(where,set) foreach 动态SQL也是MyBatis的强大特性之一,在使用JDBC时我们拼接sql语句需要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。而使用MyBatis的动态sql后,这些我们都可以很轻松的解决。 if 使用动态sql时我们可以根据条件包含where子句的一部分 < select id = " findActiveBlogWithTitleLike " resultType = " Blog " > select * from blog where state='ACTIVE' < if test = " title != null " > AND title like #{title} </ if > </ select > 这条语句提供了一种可选的查找文本功能。根据是否有传入title,来增加查询条件 choose(when,otherwise) 有时我们不想应用到所有的条件语句,只想从中选择一项。MyBatis还提供了choose元素,它有些类似于java的switch语句。 < select id = " findActiveBlogLike " resultType = " Blog " > select * from blog

spring data jpa 详解

别说谁变了你拦得住时间么 提交于 2019-12-10 03:05:18
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第三方插件整合,缓存,插件,最后会持续到mybatis的架构,源码解释,重点会介绍几个重要的设计模式,这样一个体系。基本上讲完之后,mybatis在你面前就没有了秘密,你能解决mybatis的几乎所有问题,并且在开发过程中相当的方便,驾轻就熟。 这篇文章由于介绍的类容很全,因此很长,如果你需要,那么可以耐心的看完,本人经历了很长时间的学识,使用,研究的心血浓缩成为这么短短的一篇博客。 大致整理一个提纲:   1、Spring-data-jpa的基本介绍;   2、和Spring整合;   3、基本的使用方式;   4、复杂查询,包括多表关联,分页,排序等; 现在开始:   1、Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现。在ORM框架中

mybatis原理分析

喜欢而已 提交于 2019-12-09 22:45:55
1:mybatis首先构建SqlSessionFactory,这个工厂主要就是初始化与数据库操作有关的上下文信息。会收集xml中的配置,如environment,datasource,transactionManager,setting配置等等,而默认构建出来的是DefaultSqlSessionFactory。 在mybatis最重要的配置节点就是和sql执行相关的mappers配置节点: mybatis的mappers节点下可配置mapper和package: (1)如果配置package首先会扫描接口,将接口中的每一个方法扫描到,并获取注解,“接口方法的全名称”和对应的“mappedStatement”对象(mappedStatement实际就是sql配置节点各个属性封装成的java对象)放入strictMap中。 (2)如果配置了mapper则,resources属性,url属性,class属性只能选择一个,因为源码只允许写一个,否则会抛出异常。 mybatis实际生产sql的时候是有两种方式,一个是动态sql一个是静态sql: (1)动态sql中mybatis解析器会有一个标识,如果开头是“${”,结尾是“}”,则认为是动态sql。 (2)如果是静态sql那么加入,mappedStatement中的sqlResource就是将“#{}”替换成了“?”占位符的sql样子。

MyBatis-12-动态SQL

一笑奈何 提交于 2019-12-09 19:25:46
12、动态SQL 什么事动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句 利用动态SQL这一特性可以彻底摆脱这种痛苦 动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。 if choose (when, otherwise) trim (where, set) foreach 搭建环境 CREATE TABLE `bolg`( `id` VARCHAR(50) NOT NULL COMMENT '博客id', `title` VARCHAR(100) not null comment '博客标题', `author` VARCHAR(30) not null comment '博客作者', `creat_time` datetime not null comment '创建时间', `views` int(30) not null comment '浏览量' )ENGINE=InnoDB DEFAULT CHARSET=utf8 创建一个基础工程 导包 编写配置文件 编写实体类 @Data public class Blog { private