美文网首页JAVAEE
JAVAEE框架学习——Spring——整合JDBC aop中的

JAVAEE框架学习——Spring——整合JDBC aop中的

作者: So_ProbuING | 来源:发表于2018-06-13 17:39 被阅读11次

Spring整合JDBC

Spring中提供了一个可以操作数据库的对象,封装了JDBC技术

JDBCTemplate => JDBC模板对象
与DBUtils中的QueryRunner非常相似

 //准备连接池
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://103.249.130.173:3306/hibernate_crm?useUnicode=true&characterEncoding=UTF8");
        dataSource.setUser("appUser");
        dataSource.setPassword("AA1122BB");
        //创建JDBC模板对象
        JdbcTemplate jt = new JdbcTemplate();
        jt.setDataSource(dataSource);
        //书写sql语句并执行
        String sql = "insert into t_user values(null,'rose')";
        jt.update(sql);

Spring整合Dao 数据库

步骤

1 导包

  • 4+2 spring包
  • spring-test、spring-aop、junit4类库
  • c3p0连接池 JDBC驱动
  • spring-jdbc spring-tx事务

2 准备数据库

数据库

书写Dao

public interface TUserDao {
    //增
    void save(TUser user);
    //删除
    void delete(Integer id);
    //改
    void update(TUser user);
    //查
    TUser getById(Integer id);

    int getTotalCount();

    List<TUser> getAllTUser();
}

书写实现类impl

public class TUserDaoImpl implements TUserDao {
    private JdbcTemplate jt;

    @Override
    public void save(TUser user) {
        String sql = "insert into t_user values(null,?)";
        jt.update(sql, user.getName());
    }

    @Override
    public void delete(Integer id) {
        String sql = "delete from t_user where id = ?";
        jt.update(sql, id);
    }

    @Override
    public void update(TUser user) {
        String sql = "update t_user set name = ? where id =?";
        jt.update(sql, user.getName(), user.getId());
    }

    @Override
    public TUser getById(Integer id) {
        String sql = "select * from t_user where id = ?";
        TUser tUser = jt.queryForObject(sql, new RowMapper<TUser>() {
            @Override
            public TUser mapRow(ResultSet resultSet, int i) throws SQLException {
                TUser tUser = new TUser();

                tUser.setId(resultSet.getInt("id"));
                tUser.setName(resultSet.getString("name"));
                return tUser;
            }
        }, id);
        return tUser;
    }

    @Override
    public int getTotalCount() {
        String sql = "select count(*) from t_user";
        Integer count = jt.queryForObject(sql, Integer.class);
        return count;
    }

    @Override
    public List<TUser> getAllTUser() {
        String sql = "select * from t_user";
        List<TUser> query = jt.query(sql, new RowMapper<TUser>() {
            @Override
            public TUser mapRow(ResultSet resultSet, int i) throws SQLException {
                TUser tUser = new TUser();

                tUser.setId(resultSet.getInt("id"));
                tUser.setName(resultSet.getString("name"));
                return tUser;
            }
        });
        return query;
    }

    public JdbcTemplate getJt() {
        return jt;
    }

    public void setJt(JdbcTemplate jt) {
        this.jt = jt;
    }
}

实现配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置目标对象-->
    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl"
                  value="jdbc:mysql://103.249.130.173:3306/hibernate_crm?useUnicode=true&amp;characterEncoding=UTF8"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="user" value="appUser"></property>
        <property name="password" value="AA1122BB"></property>
    </bean>
    <!--jdbcTemplate放入Spring容器-->
    <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--将UserDao放入Spring容器-->
    <bean name="userDao" class="cn.probuing.dao.TUserDaoImpl">
        <property name="jt" ref="jdbcTemplate"/>
    </bean>
</beans>

进阶内容

JDBCDaoSupport

JDBCDapSupport根据连接池创建JDBC模板
不需要手动准备JDBC模板,从父类方法中获得即可


JDBCSupport

继承JDBCDaoSupport后,需要直接注入连接池就可以了

  <!--将UserDao放入Spring容器-->
    <bean name="userDao" class="cn.probuing.dao.TUserDaoImpl">
        <!--<property name="jt" ref="jdbcTemplate"/>-->
        <property name="dataSource" ref="dataSource"/>
    </bean>

读取外部的Properties

  • 编写.properties文件

为防止properties key键冲突 需要添加前缀 例如 test.key jdbc.key

jdbc.jdbcUrl=jdbc:mysql://xxxxxxxxxx;characterEncoding=UTF8
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=xxxxx
jdbc.password=xxxxxx
  • 配置指定读取spring db.properties配置


    配置读取指定配置
  • 配置读取配置中的值作为配置中的值


    图片.png

Spring中aop事务

Spring封装了事务管理的代码

  • 打开事务
  • 提交事务
  • 回滚事务

事务操作对象

因为在不同平台,操作事务的代码各不相同,所以Spring提供了一个接口

  • PlatformTransactionManager 接口
    • JDBC平台 DataSourceTransactionManager
    • HibernateTransitionManager
      **在Spring中玩事务管理,最为核心的对象就是TransactionManager对象

Spring管理事务的属性介绍

事务的隔离级别

是否只读

事务的传播行为

事务传播行为

Spring管理事物方式

编码式

将核心事务管理器配置到Spring容器

配置核心事务管理器

配置TransactionTemplate模板

配置TransactionTemplate模板.png

将事务模板注入Service

将事务模板注入Service.png

在Service中调用模板

Service中调用模板

aop xml配置方式

导包

aop
aspect
aop联盟
weaving织入包

导入新的约束(tx)

图片.png

beans: 最基本
context:读取properties配置
aop:配置aop
tx:配置事务通知

配置通知

图片.png

配置将通知织入目标

通知织入目标

注解配置

导包

aop
aspect
aop联盟
weaving织入包

导入新的约束(tx)

图片.png

开启注解管理事务

开启注解管理事务

使用注解

图片.png 图片.png

相关文章

  • JAVAEE框架学习——Spring——整合JDBC aop中的

    Spring整合JDBC Spring中提供了一个可以操作数据库的对象,封装了JDBC技术 JDBCTemplat...

  • ssh框架的基本整合

    Spring框架的基本整合 AOP注解方式编写切面类(包含通知和切入点)开启自动代理 JDBC模板技术Spring...

  • 乐字节-Spring JDBC 和 事务控制

    Spring JDBC 和 事务控制 主要内容 Spring 整合 JDBC 环境 ​ Spring 框架除了提供...

  • 2018-09-20

    今天学习了spring 的aop aspect jdbc jdbc中的transaction应用,这样的调用mys...

  • Spring5框架

    摘要 Spring框架概述 轻量级开源JavaEE框架,为了减少企业中项目复杂性,两个核心组成:IOC和AOP I...

  • JAVAEE框架学习——Spring——注解、aop

    Spring注解 步骤 导包4+2+spring-aop 为主配置文件引入新的命名空间(约束) 开启使用注解代替配...

  • 面试:spring

    Spring 的核心 Spring 框架主要负责技术整合,该框架提供 IOC 和 AOP 机制,可以降低系统组件之...

  • Java后端的学习之Spring基础

    如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,...

  • Spring Framework 5

    Spring的核心理念:控制反转(依赖注入)和AOP Spring框架是用来整合Mybatis和SpringMVC...

  • 7.使用注解代替xml配置

    开始学习: 注:还需要导入spring框架中的aop包 步骤一:给配置文件导入spring框架中的context约...

网友评论

    本文标题:JAVAEE框架学习——Spring——整合JDBC aop中的

    本文链接:https://www.haomeiwen.com/subject/mrnceftx.html