zoukankan      html  css  js  c++  java
  • spring JDBC 事务管理

    spring JDBC 事务管理

    一、Spring 中的JDBC

    Spring中封装了JDBCORM框架,可以用它来操作数据,不需要再使用外部的OEM框架(MyBatis),一些小的项目用它。

    步骤:

    1. 导入JDBC相关的Jar包,应用dbcp连接池

    aopalliance-1.0.0.jar

    aspectjweaver-1.6.8.jar

    commons-dbcp-1.4.jar   // 数据库连接池

    commons-logging-1.1.1.jar

    commons-pool-1.5.3.jar

    mysql-connector-java-5.1.38-bin.jar

    spring-aop-4.3.10.RELEASE.jar

    spring-aspects-4.3.10.RELEASE.jar

    spring-beans-4.3.10.RELEASE.jar

    spring-context-4.3.10.RELEASE.jar

    spring-context-support-4.3.10.RELEASE.jar

    spring-core-4.3.10.RELEASE.jar

    spring-expression-4.3.10.RELEASE.jar

    spring-jdbc-4.3.10.RELEASE.jar   //jdbc 操作的对象包

    spring-tx-4.3.10.RELEASE.jar     //数据库中的事务处理包

    1. 在配置文件中配置连接池数据源,及JdbcTemplate对象

    <!-- 加载连接数据的的属性文件 -->

       <bean id="propertyPlaceholderConfigurer"

         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

           <property name="location" value="classpath:config/jdbc.properties"/>

       </bean>

       <!-- 配置数据源对象,此数据源用的是dbcp连接池 -->

       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

         <!-- 连接数据库的基本配置  ${driver}读取到属性文件的键对应的值-->

         <property name="driverClassName" value="${driver}"/>

         <property name="url" value="${url}"/>

         <property name="username" value="${username}"/>

         <property name="password" value="${password}"/>

         <!-- 配置连接池相关属性,初始大小,最大连接数,最大空闲,最小空闲,最大空闲时间 -->

         <property name="initialSize" value="${initialSize}"/>

         <property name="maxActive" value="${maxActive}"/>

         <property name="maxIdle" value="${maxIdle}"/>

         <property name="minIdle" value="${minIdle}"/>

         <property name="maxWait" value="${maxWait}"/>

       </bean>

       <!-- Spring框架封装好的JDBC对象,可以操作数据 -->

       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

          <property name="dataSource" ref="dataSource"/>

       </bean>

    1. 在程序中获取到JdbcTemplate对象,此对象就可以操作数据。

    @Service // 扫描到IOC容器中

    public class GradeService {

    @Autowired // 自动从IOC容器中注入对象

    JdbcTemplate jdbcTemplate;

    // 查询所有

    public List<Grade> getGrades() {

    String sql = "select * from grade";

    // 数据行映射器,映射数据行的列与实体对象的属性对应

    RowMapper<Grade> rm = new BeanPropertyRowMapper<>(Grade.class);

    // 可以把查询的结果集中的数据行一行行封装成实体对象

    List<Grade> grades = jdbcTemplate.query(sql, rm);

    return grades;

    }

    // 根据ID查询单个对象

    public Grade getGradeById(int id) {

    RowMapper<Grade> rm = new BeanPropertyRowMapper<>(Grade.class);

    String sql = "select * from grade where gradeId=?";

    return jdbcTemplate.query(sql, new Object[] { id }, rm).get(0);

    }

    // 根据ID查询年级名称,返回单个值

    public String getGradeNameById(int id) {

    String sql = "select gradeName from grade where gradeId=?";

    return jdbcTemplate.queryForObject(sql, new Object[] { id }, String.class);

    }

    // 根据年级名称查询ID,返回单个值

    public int getGradeIdByName(String name) {

    String sql = "select gradeId from grade where gradeName=?";

    return jdbcTemplate.queryForObject(sql, new Object[] { name }, int.class);

    }

    //添加,增,删,改调用相同的方法,只是SQL指令不同

    public int add(Grade g) {

    String sql = "insert into grade values(null,?)";

    return jdbcTemplate.update(sql, g.getGradeName());

    }

    }

  • 相关阅读:
    jquery基础认知
    CentOS6.5下samba服务
    [转载]二叉树查找
    更好的理解索引
    【转载】数据库表空间
    [转载]数据库对象
    数据库schema的简介
    [转载]oracle物化视图
    oracle物化视图
    [转载]oracle位图索引
  • 原文地址:https://www.cnblogs.com/warriors-curry/p/10489387.html
Copyright © 2011-2022 走看看