mybatis注解

MyBatis完全使用指南

 ̄綄美尐妖づ 提交于 2020-02-26 05:57:07
MyBatis完全使用指南 转 http://www.jianshu.com/p/1c7c7d1bba33 MyBatis MyBatis作为一个轻量的SQL映射框架,确实很简单,但是知识点挺多,实际使用中还是会有时想不起来某个标签该怎么写,所以整理了这篇文章,以备查询。由于MyBatis如此简单,使得这一篇文章基本把实际使用中常碰到的事情都涵盖了,包括: MyBatis中的一些概念 MyBatis包含的内容 SQL映射 动态SQL 一、 MyBatis中的一些概念 MyBatis的架构 1. MyBatis 是个什么东西 在使用MyBatis的项目里,日志中往往会出现很多拼接SQL语句的log,这其实说明了MyBatis底层还是使用JDBC来实现的。在JDBC的基础上,为了性能考虑,所有的语句都是基于 SqlSession 。顾名思义,维护这个类的实例其实就是维护了一个对于某个数据库的连接的会话,在这个会话里可以有缓存啊什么之类的。 2. mapper 接口是怎么映射成SQL语句的 目前多数开发者还是会使用XML来进行MyBatis的配置,包括MyBatis的核心配置和SQL映射配置。其实和注解一样,XML本身只不过是一个元数据的载体,最终起作用的还是MyBatis的核心类。其中有这样几个比较重要的: SqlSessionFactoryBuilder ,用来创建

2020年,MyBatis常见面试题总结

空扰寡人 提交于 2020-02-26 04:49:49
Mybatis 技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用 Mybatis 的文章,所以,一些参数使用细节略掉了,我们的目标是介绍 Mybatis 的技术架构和重要组成部分,以及基本运行原理。 博客写的很辛苦,但是写出来却不一定好看,所谓开始很兴奋,过程很痛苦,结束很遗憾。要求不高,只要读者能从系列博客中,学习到一点其他博客所没有的技术点,作为作者,我就很欣慰了,我也读别人写的博客,通常对自己当前研究的技术,是很有帮助的。 尽管还有很多可写的内容,但是,我认为再写下去已经没有意义,任何其他小的功能点,都是在已经介绍的基本框架和基本原理下运行的,只有结束,才能有新的开始。写博客也积攒了一些经验,源码多了感觉就是复制黏贴,源码少了又觉得是空谈原理,将来再写博客,我希望是“精炼博文”,好读好懂美观读起来又不累,希望自己能再写一部开源分布式框架原理系列博客。 有胆就来,我出几道 Mybatis 面试题,看你能回答上来几道(都是我出的,可不是网上找的)。 1、#{}和${}的区别是什么? 注:这道题是面试官面试我同事的。 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #

Mybatis框架(一)Mybatis介绍

二次信任 提交于 2020-02-25 21:33:16
1、什么是Mybatis MyBatis 是一款优秀的持久层框架,属于ORM映射,它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到Github。 2、获取Mybatis maven仓库https://mvnrepository.com/ < dependency > < groupId > org . mybatis < / groupId > < artifactId > mybatis < / artifactId > < version > 3.5 .4 < / version > < / dependency > 中文文档https://mybatis.org/mybatis-3/zh/index.html 3、Mybatis优缺点 与JDBC相比,减少了50%以上的代码量。

Mybatis简单数据库查询

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-24 20:51:22
简介: MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 MyBatis的功能架构: 分为三层 1.API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。 2.数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 3.基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。 优点: 1.解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 2.提供映射标签,支持对象与数据库的orm字段关系映射 3.提供对象关系映射标签,支持对象关系组建维护 4.提供xml标签,支持编写动态sql。 until public

Jquery 数组操作

陌路散爱 提交于 2020-02-22 21:01:27
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 06.产品操作 SSM 环境搭建与产品操作 1.数据库与表结构介绍 PLSQL Developer 13 是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发PL/SQL Developer侧重于易用性、代码品质和生产力 。 连接数据库的配置 解决中文??乱码 在maven bin目录下运行以下命令: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging=jar -Dfile=D:\mnt\ojdbc14-10.2.0.1.0.jar 以上地址信息部分,请根据本地jar包的信息自行修改。 创建用户与授权 数据库我们使用 Oracle -- 用户名 ssm08 -- 登录密码 itheima -- Create the user create user SSM08 identified by itheima; -- Grant/Revoke role privileges grant connect to SSM08; grant resource to

Spring5学习(kuang)

*爱你&永不变心* 提交于 2020-02-20 13:37:56
Spring 一、Spring 1.1 简介 Spring:春天 2002年,首次推出了Spring框架的雏形:interface21框架 Spring框架以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版本 Rod Johnson ,Spring Framework创始人 Spring理念:使现有的技术更加容易使用 官网:https://spring.io/projects/spring-framework <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.3.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring

springboot 多数据源mybatis的两种整合方法

瘦欲@ 提交于 2020-02-20 03:23:05
简介: 随着并发量的不断增加,显然单个数据库已经承受不了高并发带来的压力。一个项目使用多个数据库(无论是主从复制- - 读写分离还是分布式数据库结构)的重要性变得越来越明显。传统项目中(个人对传统项目的理解就是所有的业务模块都在一个tomcat中完成,多个相同的tomcat集群也可认为是传统项目)整合多数据源有两种方法:分包和AOP。 版本: springboot:1.5.9.RELEASE mariadb:5.7 一、分包方式实现 1、在application.properties中配置两个数据库: test1 database spring.datasource.test1.url=jdbc:mysql://localhost:3307/multipledatasource1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false spring.datasource.test1.username=root spring.datasource.test1.password=root spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver test2 database spring.datasource.test2

MyBatis多表操作

China☆狼群 提交于 2020-02-19 04:30:08
mybatis注解开发 简单的注解开发: 复杂的注解开发: 一对一查询: @One注解完成一对一配置:select指定另一个接口中的方法进行调用获取想要的值 一对多 @Many注解完成一对多配置:select指定另一个接口中的方法进行调用获取想要的值 多对多 mybatis的延迟加载 在One或Many注解中,使用FetchType属性可以指定加载的方式是懒加载或者立即加载。 设置为LAZY代表懒加载,效果为:当不使用关联的JavaBean时,只查询当前JavaBean中的字段,只有使用到关联的JavaBean时才去执行sql语句查询它。 设置为EAGER代表立即加载,效果为:查询JavaBean时就立刻把关联的JavaBean全部查询出来。 任务 1. 一对一和一对多的案例完成。使用两种方式进行配置 2. 多对多的配置中,把双方的查询都完成。使用两种方式配置 3. 把一对一,一对多和多对多的案例使用注解方式配置。 注意:如果使用注解配置,映射配置文件一定要删除。不能同时存在注解配置和映射文件配置。J 来源: https://www.cnblogs.com/maomaodesu/p/12329631.html

【搬砖记事】 杂记

大城市里の小女人 提交于 2020-02-16 13:49:59
一、 springboot 启动 会自动扫描启动类 同级目录或者同级目录的下级目录的 注解类,并将他们加入ioc 容器中,我今天犯了一个错,我将service 接口使用@service 注解了 实现类未用注解,导致在项目启动的时候controller 层找不到对应的service ,导致系统报错,原来我们只需要将service 的实现类使用 service 标记就行了。 二、 使用Mybatis 和 springboot 整合 dao 层接口 使用 @mapper 注解 ,mapper .xml文件 要使用@MapperScan("maper 文件路经") 注解在启动类上,使项目能够找到mapper 文件。 三、mabatis mapper 文件 查询返回结果是个集合时,我们只需要在resultType="cn.unbug.entity.User"即可 来源: https://www.cnblogs.com/200967tao/p/12316477.html

Mybatis面试问题集锦

♀尐吖头ヾ 提交于 2020-02-15 13:17:51
1、#{}和${}的区别是什么? 答:mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。 补充:在mybatis中使用#{}可以防止sql注入,提高系统安全性。MyBatis排序时使用order by 动态参数时需要注意,用$而不是# 2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? 答:还有很多其他的标签, 、 、 、 、 ,加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中 为sql片段标签,通过 标签引入sql片段, 为不支持自增的主键生成策略标签。 3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗? 答:Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时