MyBatis

Spring整合Mybatis

非 Y 不嫁゛ 提交于 2020-02-24 23:18:55
1.Spring整合Mybatis,基于XML配置 1.1 引入依赖: 除Spring依赖和Mybatis依赖以外,新增:commons-logging,slf4j,mybaits-spring,druid <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.1.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring

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

MyBatis的深入原理分析之1-架构设计以及实例分析

久未见 提交于 2020-02-24 20:23:54
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。 一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的 chenjc_it 所写的博文 原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! 1.接口层---和数据库交互的方式 MyBatis和数据库的交互有两种方式: a.使用传统的MyBatis提供的API; b. 使用Mapper接口 1.1.使用传统的MyBatis提供的API 这是传统的传递 Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession 对象完成和数据库的交互; MyBatis 提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和 MyBatis 自身配置信息的维护操作。 上述使用 MyBatis 的方法,是创建一个和数据库打交道的 SqlSession 对象,然后根据 Statement Id 和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,

MyBatis-日志、分页、缓存

非 Y 不嫁゛ 提交于 2020-02-24 20:07:35
日志 如果一个数据库的操作出现了异常,这时候我们需要排错,日志就是最好的助手。 之前使用的是输出语句或者debug。现在使用的是日志工厂。 在MyBatis中具体使用哪一个日志实现,在设置中进行设定即可。在设定的时候注意区分大小写。 STDOUT_LOGGING STDOUT_LOGGING标准日志输出。 在MyBatis核心配置文件中,配置日志。 < settings > < setting name = " logImpl " value = " STDOUT_LOGGING " /> </ settings > Log4j Log4j 是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。 我们可以控制每一条日志的输出格式。 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 1、导入log4j的包 < dependency > < groupId > log4j </ groupId > < artifactId > log4j </ artifactId > < version > 1.2.17 </ version > </ dependency > 2、编写 log4j.properties

Mybatis 02.java类的结构

只谈情不闲聊 提交于 2020-02-24 04:13:09
Mybatis把一张表当做了一个类, 类的属性是和数据库中的字段名一模一样,连大小写都是一样的 。 其次, 这个类还需要实现序列化接口 (为什么要实现序列化,进程与进程之间需要通信的话,就要用到通过二进制的数据格式放到网络上,来实现交流,序列化是把对象转化成二进制的数据,来传递信息)。 最后,是 java类 ,为实现访问的数据安全性, 属性设置为prviate,封装,用public方法来访问数据 。 重写tostring() ,这个方法是返回 这个类的全限定名+@+类的实例化对象的哈希码,说明 这个类实例化对象的信息。也可以用来返回当前的对象的属性值 ,例如: 来源: CSDN 作者: qq_38757863 链接: https://blog.csdn.net/qq_38757863/article/details/104458625

SpringBoot整合mybatis

这一生的挚爱 提交于 2020-02-23 19:04:26
一、引入依赖 <dependencies> <!-- 核心启动器, 包括auto-configuration、logging and YAML --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- 数据库操作需要的mysql 驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

mybatis-用到的mysql语句

大兔子大兔子 提交于 2020-02-23 18:13:28
1.log4j.properties # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE # Set the enterprise logger category to FATAL and its only appender to CONSOLE. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE # CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c

MyBatis中foreach循环的用法

自闭症网瘾萝莉.ら 提交于 2020-02-23 17:26:02
一、在了解foreach之前,先了解一下mybatis传入参数及parameterType 1、我们在Dao层向对应的mapper.xml文件传递参数时,可以传递的参数有:   ①、基本数据类型(如int/Integer、long/Long、float等)   ②、简单引用数据类型(如String、User实体类对象等)   ③、集合数据类型(如List、Map等)   我们在parameterType属性获取参数类型时,只需要与传入的参数类型相同即可,如: ①基本数据类型:Java代码: 1 User findById(Integer id); ①基本数据类型:mapper.xml代码: 1 <select id="findById" parameterType="int" resultType="com.demo.entity.User"> 2 SELECT * FROM `user` where id=#{id}; 3 </select> ②简单引用类型:Java代码: 1 void addUser(User user); ②简单引用类型:mapper.xml代码: 1 <insert id="addUser" parameterType="com.demo.entity.User"> 2 insert into `user` values (null,#{userName}

Hibernate 和 MyBatis 的对比

别说谁变了你拦得住时间么 提交于 2020-02-23 09:09:26
一、开发对比 开发速度   Hibernate 的真正掌握要比MyBatis来的难些。MyBatis框架较轻量级,相对简单很容易上手,但也相对简陋些。个人觉得要用好 MyBatis 还是要首先理解好 Hibernate。 开发社区   Hibernate 与 MyBatis 都是流行的持久层开发框架,但 Hibernate 开发社区相对多热闹些。   支持的工具也多,更新也快。而 MyBatis 相对平静,工具较少。 开发工作量   Hibernate 和 MyBatis 都有对应的代码生成工具。可以生成简单基本的 DAO 层方法。   针对高级查询, MyBatis 需要手动编写 SQL 语句,以及 ResultMap。而 Hibernate 有良好的映射机制,开发者无需关心 SQL 的生成与结果映射,可以更专注于业务流程。 二、对象管理与抓取策略对象管理 Hibernate 是完整的对象/关系映射解决方案,它提供了对象状态管理(state management)的功能,使开发者不再需要理会底层数据库系统的细节。也就是说,相对于常见的 JDBC/SQL 持久层方案中需要管理 SQL 语句,Hibernate 采用了更自然的面向对象的视角来持久化 Java 应用中的数据。 换句话说 Hibernate 的开发者应该总是关注对象的状态(state),不必考虑 SQL 语句的执行

MyBatis和Hibernate相比较

若如初见. 提交于 2020-02-23 07:30:50
作者:乌拉拉 链接:http://www.zhihu.com/question/21104468/answer/58579295 1、开发对比开发速度 Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 开发社区 Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8。而Mybatis相对平静,工具较少,当前最高版本3.2。 开发工作量 Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。 针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。 2、系统调优对比Hibernate的调优方案 制定合理的缓存策略; 尽量使用延迟加载特性; 采用合理的Session管理机制; 使用批量抓取,设定合理的批处理参数(batch_size); 进行合理的O/R映射设计 Mybatis调优方案 MyBatis在Session方面和Hibernate的Session生命周期是一致的,同样需要合理的Session管理机制