MyBatis

mybatis配置与使用

*爱你&永不变心* 提交于 2020-03-08 19:26:13
一:Mybatis简介 1.名称由来 Mybatis原名叫ibatis.Mybatis一开始属于Apache,2010年从Apache转移到了GoogleCode这个组织中. 2.Mybatis概念 Mybatis是一种基于ORM模式的,作用于Dao层的轻量级框架.和Hibernate类似,也支持各种SQL语句,也支持存储过程和高级映射等操作. 3.Mybatis优点 Mybatis比Hibernate更为轻量级; Mybatis几乎消除了所有的JDBC代码和参数的手工设置. 4.Mybatis特点 Mybatis具有比较强大的动态语句功能.而且Mybatis在JavaBean和表之间的映射关系建立方面,也更加的便捷灵活. 5.Mybatis的核心API ①.SqlSessionFactoryBuilder: SqlSessionFactoryBuilder是整个Mybatis框架的入口,提供了一个build()方法,用来创建SqlSessionFactory对象. SqlSessionFactoryBuilder对象一般是在xml文件中通过configuration节点来进行配置. ②.SqlSessionFactory: 用来创建SqlSession.注意:该对象一般只用创建一个对象就可以,也就是不要重复创建该对象! ③.SqlSession:

MyBatis动态sql

随声附和 提交于 2020-03-08 18:53:41
利用动态 SQL可以很方便地根据不同条件拼接 SQL 语句 if 常用于根据条件拼接where 子句。 示例: <select id="find" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{title} </if> </select> 说明:如果没有传入“title”,只返回处于“ACTIVE”状态的BLOG;反之,返回处于“ACTIVE”状态且对“title” 进行一列模糊查找的BLOG 结果。 示例: <select id="find" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{title} </if> <if test="author != null and author.name != null"> AND author_name like #{author.name} </if> </select> where where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句;而且,若语句的开头为“AND”或“OR

MyBatis——[注解方式]一对多查询DEMO

纵然是瞬间 提交于 2020-03-08 17:32:06
API @Select: 类似于<select> @Insert: 类似于<insert> @Update: 类似于<update> @Delete: 类似于<delete> @Results: 类似于<resultMap> @Result: 类似于<resultMap>的子标签 @One: 类似于<association> @Many: 类似于<collection> 源代码 DEMO ONE public interface UserDao { /** * 用户的持久层接口 * @return */ @Select("select * from user ") @Results({ @Result(id=true,property = "id",column = "id"), @Result(property = "name" ,column = "name"), @Result(property = "positions",column ="id" , javaType = List.class, many=@Many(select="cn.itcast.dao.PositionDao.findById", fetchType= FetchType.LAZY)) }) List<User> findAll(); public interface PositionDao {

Mybatis的学习总结

≡放荡痞女 提交于 2020-03-08 16:54:01
1.MyBatis简介 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。 回顾 对jdbc的封装框架有哪些: Hibernate,dbutils,jdbcTemplate[spring],mybatis 2.MyBatis的框架核心(重要) 2.1两个配置 Mybatis全局配置文件SqlMapConfig.xml 作用:配置数据源(与spring结合后就交给spring了),加载映射文件,给模型取别名 < ! -- 取别名 -- > < typeAliases > < ! -- 方式 1 :单个的取别名,不实用 -- > < ! -- < typeAlias type = "com.gyf.model.User" alias = "user" > < / typeAlias > -- > < ! -- 方式 2 :给包取别名,批量实用 , 默认别名为类名(首字母大小写都可以) -- > < package name = "com.gyf.model" > < / package > < package name = "com.gyf.vo" > < / package > < /

MyBatis学习笔记--入门的增删改查

与世无争的帅哥 提交于 2020-03-08 16:44:31
前言:MyBatis是一个支持普通SQL查询,存储过程以及高级映射的持久层框架,也被称为ORM(Object/Relational Mapping,即对象关系映射)框架。以面向对象的方式来操作持久化对象 下载: https://github.com/mybatis/mybatis-3/releases 我使用的数据库MariaDB,与mysql基本一样 MariaDB的jar包下载: https://downloads.mariadb.com/Connectors/java/connector-java-1.8.0/ 文章目录 1. MyBatis的工作原理 2. MyBatis的入门程序 3. MyBatis进行增删改查 1. MyBatis的工作原理 读取MyBatis配置文件(如:mybatis-config.xml),作为MyBatis的全局配置文件,配置了MyBatis的运行环境等,主要是获取数据库连接。 加载映射文件(如:StudentMapper),StudentMapper文件即SQL映射文件,改文件中配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。 构造会话工厂(SqlSessionFactory) 构造会话对象(SqlSession),包含了执行SQL的所有方法 Executor执行器

企业分布式微服务云SpringCloud SpringBoot mybatis (十二)断路器监控(Hystrix Dashboard)

混江龙づ霸主 提交于 2020-03-08 15:50:59
在我的第四篇文章断路器讲述了如何使用断路器,并简单的介绍了下Hystrix Dashboard组件,这篇文章更加详细的介绍Hystrix Dashboard。 一、Hystrix Dashboard简介 在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。 二、准备工作 本文的的工程栗子,来源于第一篇文章的栗子,在它的基础上进行改造。 三、开始改造service-hi 在pom的工程文件引入相应的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency> <dependency> <groupId>org.springframework

mybatis 关联(多表)查询

≡放荡痞女 提交于 2020-03-08 15:20:09
一对一查询 使用 resultType : 使 pojo 类继承一个表对应的 javabean ,添加另一个表的 javabean 属性。 Xml 配置和普通 pojo 是一样的 使用 resultMap : 使 pojo 添加另一个表对象的 javabean 属性。 Xml 配置中使用 <association property= "user" javaType= " user 路径 " > 标签配置 association 配置一个关联的对象。 一对多查询 使用 resultMap (简单,推荐): pojo 总添加 List<xxx> 属性, xxx 为另一表的 javabean 类。 Xml 配置 ResultMap : <collection property= " user " ofType= " user 路径 " > collection :配置关联的对象集合。 ofType : List 中泛型的类路径 使用 resultType (复杂): 使用双重循环遍历,去掉重复记录。 多对多查询 参考一对多,就是层级数多了一点。 来源: https://www.cnblogs.com/Shieryue/p/6638993.html

Mybatis 使用入门

耗尽温柔 提交于 2020-03-08 10:14:14
什么 mybatis MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架; Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。Mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录 优点 1、简单易学 mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现 2、灵活 mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。 3、解除sql与程序代码的耦合 通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 4、提供映射标签,支持对象与数据库的orm字段关系映射 5、提供对象关系映射标签,支持对象关系组建维护 6、提供xml标签,支持编写动态sql。 缺点 1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。 2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

MyBatis源码分析之初始化(一)

狂风中的少年 提交于 2020-03-08 10:08:09
Mybatis源码分析一(初始化过程) ​ 最近学习MyBatis源码部分,现在准备一边学习一边记录下自己的理解过程。本篇文章主要记录下Mybatis初始过程,主要有以下几个点: ​ 1、初始化做了什么 ​ 2、如何解析mybatis-config.xml各个参数的 ​ 3、涉及到的设计模式 1、初始化 首先我们看一个简易的使用Mybatis的例子。 假设我们有一张用户表如下: create table user( id int primary key auto_increment, name char(10) not null, password char(20) not null, age int not null, ); 创建一个实体类User如下: package com.alibaba.entity; public class User{ private Integer id; private String name; private String password; private Integer age; // 省略getter、setter } 声明一个接口如下: package com.alibaba.dao; import com.alibaba.entity.User; public interface UserDao{ int insert(User

Mybatis中“association”标签多层嵌套问题

不羁的心 提交于 2020-03-08 10:00:28
mybatis里查询使用嵌套association标签时,发现内层的association查询的结果一直为null 排查: 检查sql执行情况,发现有数据返回,排除 检查property的值是否和pojo中的对应,值一致,排除 检查column的值是否和数据库的相对应,相对应,排除 那么应该是mybatis没有把数据映射到位了,经过排查是association中columnPrefix被不对应 < resultMap id = "BaseResultMap" type = "a.b.c.d.e" > < id column = "id" property = "id" / > < result property = "workTime" column = "work_time" / > < result property = "model" column = "model" / > < result property = "status" column = "status" / > < association property = "interfaceUpstream" javaType = "interfaceUpstream" columnPrefix = "ui_" > < id column = "id" property = "id" / > < result