MyBatis

用try(Jedis jedis = JedisPoolUtils.getJedis()){ ... }catch(Exception e){} 这样语法糖去释放资源(Redis和MyBatis)

佐手、 提交于 2021-01-31 08:55:08
之前总是写了个close方法去释放资源,其实这样也有好处,更加的显式去释放。 但是,可以使用java的try的语法糖,让一切变得更加简单一点,释放资源就不用管了。 来源: oschina 链接: https://my.oschina.net/u/4275902/blog/4938824

1. spring5源码 -- IOC容器设计理念和核心注解的作用

我只是一个虾纸丫 提交于 2021-01-30 13:52:37
可以学习到什么? 0. spring整体脉络 1. 描述BeanFactory 2. BeanFactory和ApplicationContext的区别 3. 简述SpringIoC的加载过程 4. 简述Bean的生命周期 5. Spring中有哪些扩展接口及调用机制 一. spring源码整体脉络介绍及源码编译 1.1. 什么是IOC ioc是控制反转, 这是一种设计理念, 用来解决的是层和层之间, 类和类之间的耦合问题. 比如,现在有A, B两个类, 在A类中引用了B类. 那么如果有一天, B类要被替换掉, 我们会怎么办呢?如果B类被引用了100次, 我们要替换100次? 现在呢, A是直接调用B, 如果我们间接的调用B, 将B包装起来, 如果以后将B换成C, 只需要在包装类里面替换就可以了. 我们不需要修改A类. 这就是控制反转. Spring使用了ioc, Spring.ioc(A, B) 将A和B的引用都存在ioc中, spring会帮我们维护好, 完全不用担心. 当我们在A中要使用B的时候, 使用B对应的接口, 然后使用@Autowired注解 A { @Autowired private IB b; } 什么时候把B换掉了, 不痛不痒的, 只需要把新的类放到IoC中就可以了. 1.2. Spring源码的整体脉络梳理 Spring IoC是一个容器, 在Spring

通过源码分析MyBatis的缓存

瘦欲@ 提交于 2021-01-30 03:23:16
MyBatis缓存介绍 MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认下基于Java HashMap的缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。 重点的那句话就是: MyBatis执行SQL语句之后,这条语句就是被缓存,以后再执行这条语句的时候,会直接从缓存中拿结果,而不是再次执行SQL 这也就是大家常说的MyBatis一级缓存,一级缓存的作用域scope是SqlSession。 MyBatis同时还提供了一种全局作用域global scope的缓存,这也叫做二级缓存,也称作全局缓存。 一级缓存 测试 同个session进行两次相同查询: 1 2 3 4 5 6 7 8 9 10 11 12 @Test public void test() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { User user = (User)sqlSession.selectOne(

Mybatis源码学习(7)--mybatis缓存分析

戏子无情 提交于 2021-01-30 03:17:42
mybatis缓存分为一级缓存和二级缓存,一级缓存作用当个sqlsession,如果sqlSession关闭了,那么缓存就失效了,二级缓存作用在mapper映射文件。默认二级缓存处理类是CachingExecutor,一级缓存处理类是BaseExecutor,调用query方法时会先从二级缓存中查找结果,再从一级缓存中找,都找不到再查询数据库。 mybatis缓存级别 一级缓存 作用域:当个sqlsession,仅仅对一个会话中的数据进行缓存,不能关闭,调用query查询时,将查询结果缓存在BaseExecutor.localCache变量中,BaseExecutor对象随sqlSession创建而创建,当sqlSession销毁时,BaseExecutor随之消失,缓存消失。 sqlSession从open()到close()中间整个范围就是单个sqlSession作用域,作用域区间如果调用相同的查询方法,并且参数相同,那么只会执行一次sql。 //打开一个sqlsession SqlSession session = ssf.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); Map<String, Object> map = new HashMap(); map.put(

Mybatis中的多表查询

六月ゝ 毕业季﹏ 提交于 2021-01-29 08:58:08
Mybatis中的多表查询 1.mybatis中的表之间的关系分析 表之间的关系有: 1. 一对多 2. 多对一 3. 一对一 4. 多对多 2. 表关系举例 1. 用户和订单就是一对多 { 一个用户可以下多个订单 } 2. 订单和用户就是多对一 { 多个订单属于同一个用户 } 3. 人和身份证号就是一对一 { 一个人对应一个身份证号 一个身份证号只能对应一个人 } 4. 老师和学生之间就是多对多的关系 { 一个老师可以教多个学生 一个学生可以被多个老师教过 } 3. 注意:在Mybatis中,把多对一看成是一对一进行操作。 如:多个账户对应一个用户,那么每个账户都对应一个用户。所以在mybatis中把多对一看成是一对一进行操作 4. 多对一(mybatis中的一对一)、一对多、多对多三种方式在mybatis中的操作方式 多对一(mybatis中的一对一) 以账户Account和用户User为例。完成:查询所有账户的同时,查询出该账户对应的User用户 account表: user表: 操作方式:【重点】 在多的一方(即account方)对应的实体类中加入一方(即user方)的对象引用 实体类代码: public class Account implements Serializable { private Integer ID; private Integer UID;

Incorrect double values returned from mysql to java

早过忘川 提交于 2021-01-29 06:20:59
问题 So I was trying to read some double values from mysql to java. I am using a mybatis mapper to read my values and return the value as a map. When I run my query in sql, my value comes out to be -42295.8451869851 but when I use mybatis to pick the same from a query and put it in a java Hashmap the value changes to {Double@25327}-42295.84518699004 . Why is this anomaly and what can I do to prevent it? This is the mybatis query line I am using: I am using the class org.apache.ibatis.session

Configure mybatis to use an existing connection

痞子三分冷 提交于 2021-01-29 01:00:25
问题 I want to set up a connection between my application and a Oracle database. I do not have the following database information: URL user name password What I can retrieve is a valid java.sql.Connection by using the API provided by Blackboard. Is it possible to set up mybatis in this case? I am using the configuration shown below: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

Configure mybatis to use an existing connection

独自空忆成欢 提交于 2021-01-29 00:49:45
问题 I want to set up a connection between my application and a Oracle database. I do not have the following database information: URL user name password What I can retrieve is a valid java.sql.Connection by using the API provided by Blackboard. Is it possible to set up mybatis in this case? I am using the configuration shown below: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

Configure mybatis to use an existing connection

荒凉一梦 提交于 2021-01-29 00:41:48
问题 I want to set up a connection between my application and a Oracle database. I do not have the following database information: URL user name password What I can retrieve is a valid java.sql.Connection by using the API provided by Blackboard. Is it possible to set up mybatis in this case? I am using the configuration shown below: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">