mybatis动态sql

Mybatis篇

只谈情不闲聊 提交于 2019-12-26 02:39:01
1.Mybatis比IBatis比较大的几个改进是什么 1>接口绑定,包括注解绑定和xml绑定 2>动态sql有原来的节点配置变成ONGL表达式(#{}) 3>在一对一(多对一),一对多的时候引进了associateion,在一对多的时候引入了collection节点,不过都是在resultMap里配置 2.什么是MyBatis的接口绑定,有什么好处 接口映射就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以了 比sqlSession提供的方法我们可以有更加灵活的选择和设置 // 加载接口 UserDao userDao = sqlSession.getMapper(UserDao.class); 3.接口绑定有几种实现方式,分别是怎么实现的? 接口绑定有两种实现方式 1>注解式---在接口上面加上@select-@update等注解里面包含Sql语句来绑定 2>xml方式--SQL来绑定,xml文件里面是我namespace必须为接口的全限定名 4.什么情况下用注解绑定,什么情况下用xml绑定 用SQL语句较简单时,用注解绑定 用SQL语句比较复杂时,用xml ,一般用xml 5.MyBatis实现一对一有几种方式?具体怎么操作的 有联合查询和嵌套查询 联合查询时几个表联合查询,只查询一次

Mybatis JDBC->Mybatis

社会主义新天地 提交于 2019-12-25 19:48:17
  1 什么是JDBC   Java程序都是通过JDBC(Java Data Base Connectivity)连接数据库的,通过SQL对数据库编程。JDBC是由SUN公司(SUN公司已被Oracle公司收购)提出的一系列规范,只定义了接口规范,具体的实现是由各个数据库厂商去完成的。因为每个数据库都有其特殊性,这些是Java规范没有办法确定的,所以JDBC就是一种典型的桥接模式。      2 常用接口   2.1 Driver接口   要连接数据库,必须先加载特定厂商的数据库驱动程序,不同的数据库有不同的加载方法。共有2种方式。   2.1.1 Class.forName("com.mysql.jdbc.Driver");   推荐这种方式,不会对具体的驱动类产生依赖。   例如: 1 // 加载Oracle驱动 2 Class.forName("oracle.jdbc.driver.OracleDriver");   2.1.2 DriverManager.registerDriver("com.mysql.jdbc.Driver");   会造成DriverManager中产生2个一样的驱动,并会对具体的驱动类产生依赖。   2.2 Connection接口   与特定数据库连接后,Connection执行SQL语句并返回结果。DriverManager

Mybatis的动态SQL语句

房东的猫 提交于 2019-12-25 10:59:42
Mybatis的动态SQL语句主要解决的问题是 不同条件SQL语句的拼接 。 例如:根据用户信息,查询用户列表,当不知道根据的是用户的什么信息时,写出查询的SQL语句是有一定困难的,而动态SQL语句主要解决的就是此类问题。 if标签的使用 在持久层接口定义方法 /** * 根据用户信息,查询用户列表 * @param user * @return */ List < User > findByUser ( User user ) ; 编写持久层接口对应的映射文件 <!-- 根据用户信息,查询用户列表 --> < select id = " findByUser " resultType = " User " parameterType = " User " > select *from user where 1 = 1 < if test = " id != 0 " > and id = #{id} </ if > < if test = " username != null and username != ' ' " > and username like #{username} </ if > < if test = " birthday != null " > and birthday = #{birthday} </ if > < if test = " sex !=

一、MyBatis简介

杀马特。学长 韩版系。学妹 提交于 2019-12-24 01:14:08
1.发展历史 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到 Github 。【 百度百科 】 2.简介 MyBatis 是一个优秀的基于java的持久层框架,它内部封装了JDBC,使开发者只需关注SQL语句,而不用再花费精力去处理诸如注册驱动、创建Connection、配置Statement等繁杂过程。 MyBatis 通过xml或注解的方式将要执行的各种statement(statement、prepareStatement)配置起来,并通过java对象和Statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由MyBatis 框架执行SQL并将结果映射成java对象并返回。 MyBatis是一个支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀 持久层框架 。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的 XML或注解 用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3.MyBatis 与Hiberna

Mybatis常见面试题总结

泄露秘密 提交于 2019-12-23 08:31:48
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4

Mybatis学习--Mapper.xml映射文件

只谈情不闲聊 提交于 2019-12-23 08:23:03
本文转载自: https://www.cnblogs.com/lcngu/p/5470695.html 作者:lcngu 转载请注明该声明。 简介    Mapper.xml 映射文件中定义了操作数据库的 sql ,每个 sql 是一个 statement ,映射文件是 mybatis 的核心。   映射文件中有很多属性,常用的就是 parameterType( 输入类型 )、 resultType( 输出类型 )、resultMap()、rparameterMap()。 parameterType(输入类型)    1、 #{}与${}   #{} 实现的是向 prepareStatement 中的预处理语句中设置参数值, sql 语句中 #{} 表示一个占位符即 ? 。 1 <!-- 根据id查询用户信息 --> 2 < select id ="findUserById" parameterType ="int" resultType ="user" > 3 select * from user where id = #{id} 4 </ select >   使用占位符 #{} 可以有效防止 sql 注入 ,在使用时不需要关心参数值的类型, mybatis 会自动进行 java 类型和 jdbc 类型的转换。 #{} 可以接收简单类型值或 pojo 属性值,如果

关于jpa源码的初步了解

好久不见. 提交于 2019-12-22 00:41:36
关于jpa源码的初步了解 jpa简介 引入jpa 基本概念 源码 debug总结 扩展 mybatis ,mybatis-plus 和 hibernate比较 jpa简介 Spring data JPA是Spring在ORM框架,以及JPA规范的基础上,封装的一套JPA应用框架,并提供了一整套的数据访问层解决方案。底层还是使用了 Hibernate 的 JPA 技术实现。 Hibernate是一个具体的ORM的持久层框架 引入jpa pom文件: 配置文件 : 建表策略简介:ddl-auto create-drop --> 先删除表,再创建表,再删除表(必须保存关闭EntityManagerFactory) 【开发一般不用】 create --> 先删除表,再创建表,不会再删除表。每次加载hiberna的时候都会先删除再创建,个人认为很危险,慎用【测试中需要清空表的时候使用】 update --> 修改(如果没有表会创建,如果表里面没有属性,映射信息存在,会增加这个列) 【测试和web项目中使用】 validate --> 验证(只验证domain中有的部分) 表不存在,会抛出异常(不会创建新表),bean类映射信息少属性,表比映射定义的列要多,不会报错,反之抛出异常 【用在系统已经上线或者客户给定了数据库的情况下】 基本概念 四大对象 Persistence : 工具类

MyBatis框架之基本知识介绍

假如想象 提交于 2019-12-19 04:09:41
前身背景: 前身是iBatis,为Apache的一个开源项目。2010年迁移到了Google Code,改名为MyBatis.2013年迁移到Github。 MyBatis框架以及ORM MyBatis是一个开源的数据持久层框架,内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射。作为持久层框架,主要思想是将程序中的大量的SQL语句分离出来,配置在相应的配置文件中,这样可以在不修改代码的情况下,直接在配置文件中的修改SQL。 ORM(Object/Relational Mapping)对象关系映射。是一种数据持久化的技术。在对象模型和关系型数据库之间建立关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。MyBatis通过简单的XML或者注解进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。 MyBatis环境搭建: 1.下载jar包, 官方网站: http://mybatis.org .(目前官网在国内受限制,若可以访问到,所有下载链接全部引导至github上-----推荐下载mybatis-3.2.2.zip和mybatis-3-mybatis-3.2.2.zip) github网址:https://github.com/mybatis/mybatis-3/releases. 2

深入理解 MyBatis 启动流程

此生再无相见时 提交于 2019-12-19 01:40:11
环境简介与入口 记录一下尝试阅读Mybatis源码的过程,这篇笔记是我一边读,一遍记录下来的,虽然内容也不多,对Mybatis整体的架构体系也没有摸的很清楚,起码也能把这个过程整理下来,这也是我比较喜欢的一种学习方式吧 单独Mybatis框架搭建的环境,没有和其他框架整合 入口点的源码如下: @Test public void test01() { try { this.resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2. 创建SqlSessionFactory工厂 this.factory = new SqlSessionFactoryBuilder().build(resourceAsStream); // 3. 创建sqlSession // todo 怎么理解这个sqlSession? 首先它是线程级别的,线程不安全, 其次它里面封装了大量的CRUD的方法 this.sqlSession = factory.openSession(); IUserDao mapper = this.sqlSession.getMapper(IUserDao.class); List<User> all = mapper.findAll(); for (User user : all) {

持久层框架:MyBatis 3.2(1)

删除回忆录丶 提交于 2019-12-17 04:19:48
MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的 JPetStore 实例。 看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程。如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。 MyBatis的优缺点 优点: 1、简单易学 mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 2、灵活 mybatis不会对应用程序或者 数据库 的现有设计强加任何影响。