mapper

MyBatis-13-缓存

非 Y 不嫁゛ 提交于 2019-12-09 18:32:20
13、缓存(了解) 13.1、简介 查询 : 连接数据库,耗资源! 一次查询的结果,给他暂存在一个可以直接取到的地方!--->内存 : 缓存 我们再次查询相同数据的时候,直接走缓存,就不用走数据库了 什么是缓存[Cache]? 存在内存中的临时数据。 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询, 从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。 为什么使用缓存? 减少和数据库的交互次数,减少系统开销,提高系统效率。 什么样的数据能使用缓存? 经常查询并且不经常改变的数据。 13.2、Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存: 一级缓存 和 二级缓存 默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地缓存) 二级缓存需要手动开启和配置,他是基于namespace级别的缓存。 为了提扩展性,MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存 13.3、 一级缓存也叫本地缓存:SqlSession 与数据库同义词会话期间查询到的数据会放在本地缓存中。 以后如果需要获取相同的数据,直接从缓存中拿,没有必要再去查询数据; 测试步骤: 开启日志!

mybatis学习笔记-02

我与影子孤独终老i 提交于 2019-12-09 17:03:54
2、第一个Mybatis程序 思路:搭建环境-->导入Mybatis-->编写代码-->测试! 2.1、搭建环境 搭建数据库 CREATE DATABASE `mybatis`; use `mybatis`; CREATE TABLE `user`( `id` INT(20) not null PRIMARY KEY, `name` VARCHAR(30) DEFAULT NULL, `pwd` VARCHAR(30) DEFAULT NULL )ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `user` (`id`,`name`,`pwd`) VALUES (1,'狂神','123456'), (2,'张三','123456'), (3,'李四','123890') 新建项目 新建一个普通的maven项目 删除src目录 导入maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

Jackson Mapping List of String or simple String

醉酒当歌 提交于 2019-12-09 17:02:46
问题 I'm trying to get some Json from an API and parse them into some POJO's to work with them but i have this case where i can get for a key a simple String or an arrayList of Strings. The Json looks like this : { "offerDisplayCategoryMapping": [ { "offerKey": "EUICC_BASE_ACTIVATION_V01", "categoriesKeys": { "categoryKey": "Included" } }, { "offerKey": "EUICC_BASE_ACTIVATION_V02", "categoriesKeys": { "categoryKey": "Included" } }, { "offerKey": "EUICC_BASE_ACTIVATION_V03", "categoriesKeys": {

spring boot整合mybatis

无人久伴 提交于 2019-12-09 15:32:45
1.新建一个web项目 添加mysql驱动,Lombok是一个插件,加上后可以自动装配get set tostring等方法,spring boot devtool为热部署工具 1.添加一个实体类 @Data相当于get set等方法,基于lombok插件。也可以写@Getter @Setter 2.因为在maven里面已经添加了mysql的驱动包,它会自动去扫描数据库路径,所以必须在配置文件中添加mysql地址 3.添加mybatis配置 加入Mapper接口 配置Mapper.xml,namespace为mapper接口的类路径,resultType可以为实体路径或者字符串等,id和mapper接口类的方法名一致。 如果在前面没有在yml里面配置驼峰映射,或者有其他的映射关系,需要自己手动添加实体类和数据库字段的映射关系 <mapper namespace="com.cisdi.cms.db.MenuAccessDao"> <resultMap id="BaseResultMap" type="com.cisdi.cms.entity.MenuAccess"> <id column="user_id" jdbcType="INTEGER" property="userId" /> <id column="role_id" jdbcType="INTEGER" property=

Linux kernel device mapper

为君一笑 提交于 2019-12-09 14:26:35
Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构,如图 1。 图1 Device Mapper的内核体系架构 在内核中它通过一个一个模块化的 target driver 插件实现对 IO 请求的过滤或者重新定向等工作,当前已经实现的 target driver 插件包括软 raid、软加密、逻辑卷条带、多路径、镜像、快照等,图中 linear、mirror、snapshot、multipath 表示的就是这些 target driver。Device mapper 进一步体现了在 Linux 内核设计中策略和机制分离的原则,将所有与策略相关的工作放到用户空间完成,内核中主要提供完成这些策略所需要的机制。Device mapper 用户空间相关部分主要负责配置具体的策略和控制逻辑,比如逻辑设备和哪些物理设备建立映射,怎么建立这些映射关系等等,而具体过滤和重定向 IO 请求的工作由内核中相关代码完成。因此整个 device mapper 机制由两部分组成--内核空间的 device mapper 驱动、用户空间的device mapper 库以及它提供的 dmsetup 工具。在下文中,我们分内核和用户空间两部分进行介绍。 内核部分 Device mapper

Mybatis 一对多

邮差的信 提交于 2019-12-09 12:05:31
自己练习,自己记录。 假设有 student 和 goods 两张表 应用场景一: 一个student可以购买多个goods 一对多 Student.xml文件如下: <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hz.platform.demo.dao.StudentDao"> <!-- 中文文档https://mybatis.org/mybatis-3/zh/dynamic-sql.html--> <resultMap id="studentResult" type="com.hz.platform.demo.entity.Student"> <result column="uuid" property="uuid" jdbcType="VARCHAR"/> <result column="stu_name" property="stuName" jdbcType="VARCHAR"/> <result column="address" property="address" jdbcType="VARCHAR"/> <result column="age"

MyBatis框架核心之(三)注解使用接口映射

纵然是瞬间 提交于 2019-12-09 11:40:08
三、Mybatis接口映射(注解) 传统的mapper.xml+接口使用接口映射相对较麻烦 所以我们可以使用注解来简化开发 支持的注解有以下: MyBatis 可以利用 SQL 映射文件来配置,也可以利用 Annotation 来设置。 MyBatis 提供的一些基本注解如下表所示。 注解 目标 相对应的 XML 描述 @CacheNamespace 类 <cache> 为给定的命名空间 ( 比如类 ) 配置缓存。 属性 :implemetation,eviction, flushInterval,size,readWrite,blocking 和 properties 。 @Property N/A <property> Specifies the property value or placeholder(can replace by configuration properties that defined at the mybatis-config.xml ). Attributes: name , value . (Available on MyBatis 3.4.2+) @CacheNamespaceRef 类 <cacheRef> 参照另外一个命名空间的缓存来使用。属性 :value, name 。 If you use this annotation, you

【mybatis】mybatis面试题

拈花ヽ惹草 提交于 2019-12-09 01:58:29
mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径。 2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行的时候建立起来,程序结束的时候消亡 3.SqlSessionFactory建立SqlSession,目的执行sql语句,SqlSession是过程级,一个方法中建立,方法结束应该关闭 4.当用户使用mapper.xml文件中配置的的方法时,mybatis首先会解析sql动态标签为对应数据库sql语句的形式,并将其封装进MapperStatement对象,然后通过executor将sql注入数据库执行,并返回结果。 5.将返回的结果通过映射,包装成java对象。 什么是MyBatis的接口绑定,有什么好处 接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们通过直接调用接口方法 例如: UserMapper userMapper=sqlSession.getMapper (UserMapper.class) 就可以,这样比起原来了SqlSession提供的方法,例如List<Country> countryList = sqlSession.selectList("selectAll")

Mybatis常见面试题总结

半城伤御伤魂 提交于 2019-12-09 01:55:10
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)

从hadoop框架与MapReduce模式中谈海量数据处理

邮差的信 提交于 2019-12-08 18:20:07
废话不说直接来一张图如下: 从JVM的角度看Map和Reduce Map阶段包括: 第一读数据:从HDFS读取数据 1、问题:读取数据产生多少个Mapper?? Mapper数据过大的话,会产生大量的小文件,由于Mapper是基于虚拟机的,过多的Mapper创建和初始化及关闭虚拟机都会消耗大量的硬件资源; Mapper数太小,并发度过小,Job执行时间过长,无法充分利用分布式硬件资源; 2 、 Mapper 数量由什么决定?? ( 1 ) 输入文件数目 ( 2 ) 输入文件的大小 ( 3 ) 配置参数 这三个因素决定的。 涉及参数: mapreduce.input.fileinputformat.split.minsize //启动map最小的split size大小,默认0 mapreduce.input.fileinputformat.split.maxsize //启动map最大的split size大小,默认256M dfs.block.size//block块大小,默认64M 计算公式:splitSize = Math.max(minSize, Math.min(maxSize, blockSize)); 例如 默认情况下:例如一个文件800M,Block大小是128M,那么Mapper数目就是7个。6个Mapper处理的数据是128M,1个Mapper处理的数据是32M