springPersistence

1. SpringJdbc

1.1 demo实现

spring提供了很多模板对象,叫做xxxTemplate

实现步骤:

  1. 导入坐标
  2. 创建数据和POJO
  3. 使用jdbcTemplate
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
</dependency>
<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
@Test
//测试JdbcTemplate开发步骤
public void test() throws PropertyVetoException {
    //创建数据源对象
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    dataSource.setDriverClass("com.mysql.jdbc.Driver");
    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
    dataSource.setUser("root");
    dataSource.setPassword("root");

    JdbcTemplate jdbcTemplate = new JdbcTemplate();
    //设置数据源对象  知道数据库在哪
    jdbcTemplate.setDataSource(dataSource);
    //执行操作
    int row = jdbcTemplate.update("insert into account values(?,?)", "tom", 5000);
    System.out.println(row);
}

可以把jdbcTemplatedataSource放到spring容器中

1.2 基本操作

  1. 查询操作

    // 查询一个
    jdbcTemplate.queryForObject("select * from 表明 where id = ?", 实体类.class, id具体值);
    // 查询所有
    jdbcTemplate.query("select * from 表明", BeanPropertyRowMapper<实体>(实体.class));
    
  2. 更新操作

    jdbcTemplate.update();
    

2. 事务控制

  1. 配置平台事务管理器(不同的dao层实现不一样)
  2. 配置事务增强
  3. 配置AOP织入(底层aop实现)
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>
<aop:config>
    <aop:pointcut id="myPointcut" expression="execution(* *.*.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"></aop:advisor>
</aop:config>

其中<tx:method>表示切点放到的事务参数配置:

  1. name:切点名称
  2. isolation:隔离级别
  3. propogation:事务传播行为
  4. timeout:超时时间
  5. read-only:是否只读

注解驱动在类或者方法上加对应的@Transactional注解即可

注意打开事物的注解驱动:<tx:annotation-driven />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值