首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Cache抽象-基于XML的配置声明(基于ConcurrentMap的配置)

概述 示例 项目结构 数据库表数据Oracle 实体类 服务层 Spring配置文件 单元测试 日志输出 日志分析 示例源码 概述 Spring Cache基于注解的配置 如果不想使用注解或者由于其他原因无法获得项目的源码等...,Spring也支持使用XML的方式配置Spring Cache,主要是通过类似于aop:advice的cache:advice来进行的。...cache:advice下面可以指定多个cache:caching元素,其有点类似于使用注解时的@Caching注解。...cache:caching元素下又可以指定cache:cacheable、cache:cache-put和cache:cache-evict元素,它们类似于使用注解时的@Cacheable、@CachePut...; import org.junit.Before; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext

30840

Spring JDBC-使用Spring JDBC访问数据库

概述 使用Spring JDBC 基本的数据操作 更改数据 返回数据库表的自增主键值 批量更改数据 查询数据 使用RowCallbackHandler处理结果集 使用RowMapperT处理结果集 RowCallbackHandler...当然了,还有其他方法 ,需要指出的是,在实际用用中,应该优先考虑不带回调接口的JdbcTemplate方法。没有必要使用那些带有回调接口的方法,因为Spring会在内部自动创建这些回调实例。...更好的选择是使用JDBCTemplate批量数据更改的方法。一般情况下,后者拥有更好的性能,因为更新的数据将被批量发送到数据库中,它减少了对数据库访问的次数。 ?...Spring在内部使用JDBC提供的批量更新API完成操作,如果底层的JDBC Driver不支持批量更新操作,Spring将采用逐条更新的方式模拟批量更新。...这里应该使用RowCallbackHandler接口,在processRow接口方法内部处理结果集数据。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring Cache-缓存概述及使用

    在Java中一般会对调用方法进行缓存控制,比如 findUserById(Sting id),先从缓存中查找有没有符合查询条件的数据,如果没有,则执行改方法从数据库中查找该用户,然后添加到缓存中,下次调用时将从缓存中获取...通过使用AOP对方法机型织入,如果已经为特定方法入参执行过该方法,那么不必执行实际方法就可以返回被缓存的结果。...假设:我们根据artisanName查询artisan信息是一个非常频繁的动作,自然会想到对一个artisan的查询方法做缓存,以避免频繁的数据库访问操作,提高页面的相应速度。...Artisan的服务类,此服务使用缓存管理器来支持用户查询。...,当调用这个方法的时候,会从一个名叫 littleArtisan的缓存中查询,如果没有,则执行实际的方法(即查询数据库),并将执行的结果存入缓存中,否则返回缓存中的对象。

    6.1K10

    spring JdbcTemplate 查询,参数中使用BeanPropertyRowMapper的作用

    我们在使用BeanPropertyRowMapper时,是给query()方法传递一个BeanPropertyRowMapper对象,让JdbcTemplate帮我们把查询结果集ResultSet的每一行结果都使用...BeanPropertyRowMapper.mapRow()方法,转化成我们想要的Java类对象 注意:自动绑定,需要列名称和Java实体类名字一致,如:属性名 “userName” 可以匹配数据库中的列字段...重点(敲黑板) 所以,如果在使用时,Java类名称要想和数据库字段名称匹配上,必须要把数据库字段名称设计成以下两种中的一种, 数据库字段名设计成全小写的形式,如myname;数据库字段名设计成下划线分割的形式...= jdbcTemplate.query(    SEL_BY_USERNAME_PWD,    new Object[] { user.getUserName(), user.getPwd()...},    new BeanPropertyRowMapper(UserEntity.class) ); User user = jdbcTemplate.queryForObject

    2.1K41

    Spring Cache抽象-缓存注解

    这些注解定义了哪些方法的返回值会被缓存或者从缓存中移除。 需要注意的是,只有public定义的方法才可以被缓存, private、protected或者使用default修饰符的方法都不能被缓存。...当在一个类上使用注解时,该类中每个公共方法的返回值都将被缓存到指定的缓存项或者从中移除。...在默认情况下,缓存抽象使用方法签名以及参数作为key,并将该键与方法调用的结果作为Value,如果在Cache注解上没有指定Key,则Spring会使用KeyGenerator来生成一个key....在调用方法前,将对注解中声明的条件进行评估,满足条件才缓存。 与condition属性相反,可以使用unless属性排除某些不希望缓存的对象。...当希望使用方法返回值来更新缓存时可以选择这种方法 如果使用了 @Cacheable 注释,则当重复使用相同参数调用方法的时候,方法本身不会被调用执行,即方法本身被略过了,结果直接从缓存中找到并返回了。

    89920

    Spring6整合JUnit5和1事务JdbcTemplate

    6、单元测试:JUnit 在之前的测试方法中,几乎都能看到以下的两行代码: ApplicationContext context = new ClassPathXmlApplicationContext...针对上述问题,我们需要的是程序能自动帮我们创建容器。我们都知道JUnit无法知晓我们是否使用了 Spring 框架,更不用说帮我们创建 Spring 容器了。...注解标识的位置 @Transactional标识在方法上,则只会影响该方法 @Transactional标识的类上,则会影响类中所有的方法 7.3.5、事务属性:只读 ①介绍 对一个查询操作来说,如果我们把它设置成只读...②使用方式 @Transactional(readOnly = true) public void buyBook(Integer bookId, Integer userId) { //查询图书的价格...在service类中有a()方法和b()方法,a()方法上有事务,b()方法上也有事务,当a()方法执行过程中调用了b()方法,事务是如何传递的?合并到一个事务里?还是开启一个新的事务?

    1.2K30

    Junit 实例精讲基础教程(二) 使用@Test+expected、@Rule+ExpectedException模拟方法异常执行的方式

    在实际业务中,进行单元测试时,我们除了需要测试正常流程和正确的程序功能之外,可能还需要测试异常场景,在Junit中该如何模拟异常场景呢? 在Junit中,通常有3种方式去模拟生产中的异常场景。...使用@Test结合它的属性expected 使用try-catch并且最后使用fail() 使用@Rule和 ExpectedException 1....; import org.junit.Test; public class Exception1Test { /** * 如果测试该方法时产生一个ArithmeticException...的异常,则表示测试通过 * 你可以改成int i = 1 / 1;运行时则会测试不通过-因为与你的期望的不符 */ @Test(expected = ArithmeticException.class...; //注意:这是java中的静态引入 import static junit.framework.TestCase.fail; import static org.hamcrest.CoreMatchers.is

    45210

    【Spring】通过JdbcTemplate实现CRUD操作

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 通过JdbcTemplate...spring-test 5.2.6.RELEASE 注意:MySQL驱动的版本需要与下载使用的...增删改操作时,调用jdbcTemplate.update()方法 查询操作时,可调用jdbcTemplate.queryForObject()和jdbcTemplate.query()等方法 ①添加操作...;"; //第二步 调用jdbcTemplate的方法完成更新 int rows = jdbcTemplate.update(sql, "高启兰", 20, "女");...④查询操作 查询操作,可以查询对象,查询集合,查询单个值等... import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired

    24630

    Spring:声明式事务

    目录 JdbcTemplate 简介 准备 ①加入依赖 ②创建jdbc.properties ③配置Spring的配置文件 测试 ①在测试类装配 JdbcTemplate ②测试增删改功能 ③查询一条数据为实体类对象...③观察结果 基于XML的声明式事务 场景模拟 修改Spring配置文件 JdbcTemplate 简介 Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 准备...③观察结果 由于使用了Spring的声明式事务,更新库存和更新余额都没有执行 @Transactional注解标识的位置 @Transactional标识在方法上,咋只会影响该方法 @Transactional...标识的类上,咋会影响类中所有的方法 事务属性:只读 ①介绍 对一个查询操作来说,如果我们把它设置成只读,就能够明确告诉数据库,这个操作不涉及写操作。...②使用方式 @Transactional(readOnly = true) public void buyBook(Integer bookId, Integer userId) { //查询图书的价格

    70140

    JAVAEE框架之Spring JdbcTemplate

    七.JdbcTemplate 概念:Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。...目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。 JdbcTemplate处理了资源的建立和释放。...方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句; query方法及queryForXXX方法:用于执行查询相关语句; call方法: 用于执行存储过程、函数相关语句...:void方法之前 @After: void方法之后 @Test:用于单元测试的void方法 import org.junit.After; import org.junit.Before; import...jdbcTemplate; /** * 这个注解是在junit单元测试,常规的void方法之前进行; */ @Before public void before

    10610

    Spring JDBC-自增键和行集RowSet

    );获取下一个主键值,主键值类型为String 在其抽象类AbstractDataFieldMaxValueIncrementer中,提供了几个重要属性: incrementerName:定义序列名后模拟序列表的名称...AbstractSequenceMaxAbstractSequence使用标准的数据库序列产生主键值, 而AbstractColumnMaxValueIncrementer使用一张模拟序列的表产生主键值...1、数据库层主键方案不足: 其一,它给应用开发带来不便,因为你必须通过一个查询获取新增数据的主键值; 其二,不方便主键值的全局管理和控制,使系统散失灵活性; 其三,不方便数据的整合和迁移。...JdbcTemplate 为获取基于行集的结果集,提供如下查询方法 SqlRowSet queryForRowSet(String sql) SqlRowSet queryForRowSet(String...所以对于大结果集的数据,使用SQLRowSet会造成很大的内存消耗,不过JdbcTemplate的maxSize属性依然会现在SqlRowSet的返回记录数。

    59620
    领券