spring mvc环境之数据库的基本配置(八)

spring mvc环境之数据库的基本配置

统一步骤:

1.pox.xml文件引入jar包。

2.resources文件建立数据库的配置信息

3.在applicationContent.xml文件配置数据源bean,让spring容器管理数据源类.

------------------

1.引入数据库连接包

 <!-- 数据库连接 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.18</version>
    </dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.3.1</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-orm</artifactId>
  <version>${spring.version}</version>
</dependency>

 

2.resources建立数据库配置文件jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=89757
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000

 

3.applicationContent.xml配置数据源datasource

 

<!-- 3.spring用来控制业务逻辑,数据源,事务控制,aop -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    
    <!-- 4.jdbc模板对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

 4.数据库的事务配置 (事务一般是基于aop的,要引入spring-aop、spring-tx)

    <!-- 5.spring事务管理器 -->
    <bean id="DataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 6.(1)开启基于注解的事务 -->
    <tx:annotation-driven transaction-manager="DataSourceTransactionManager"/>
    <!-- 6.(2)使用xml配置的事务(主要使用) -->
    <aop:config>
        <!-- 切入点表达式(就是通过表达式,切入到那些类方法中进行事务控制) -->
        <!-- 表达式(所有权限修饰符,这个包里面所有方法,所有参数都进行事务控制) -->
        <aop:pointcut id="pc" expression="execution(* com.cc8w.*.service..*(..))"/>
        <!-- 配置事务增强 -->
        <aop:advisor pointcut-ref="pc" advice-ref="txAdvice"/>
    </aop:config>

    <tx:advice id="txAdvice" transaction-manager="DataSourceTransactionManager">
        <tx:attributes>
            <!-- 所有方法都是事务方法 -->
            <tx:method name="*"/>
            <!-- delete等开头的方法都是事务方法 -->
            <tx:method name="delete*" propagation="REQUIRED" read-only="false"
                       rollback-for="java.lang.Exception"/>
            <tx:method name="insert*" propagation="REQUIRED" read-only="false"
                       rollback-for="java.lang.Exception"/>
            <tx:method name="update*" propagation="REQUIRED" read-only="false"
                       rollback-for="java.lang.Exception"/>
            <tx:method name="save*" propagation="REQUIRED" read-only="false"
                       rollback-for="java.lang.Exception"/>
            <!-- “只读事务”并不是一个强制选项,它只是一个“暗示”,提示数据库驱动程序和数据库系统,这个事务并不包含更改数据的操作,
            那么JDBC驱动程序和数据库就有可能根据这种情况对该事务进行一些特定的优化,比方说不安排相应的数据库锁,以减轻事务对数据库的压力,
            毕竟事务也是要消耗数据库的资源的。 -->
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>

 

以上配置,只能连接到数据库,想要操作数据库(增删改查),还是有些不便,需要在集成第三方的ORM框架,下一篇介绍mybatis的配置,来更加方便的实现数据库操作.

 

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping("gettest1")
    public Object getTest1(){
        System.out.println(jdbcTemplate);
        
        // 1创建sql语句
        String sql = "select * from test where id=?";
        UserEntity user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<UserEntity>(UserEntity.class),1);
        System.out.println(user);

        String sql1="select count(*) from test";
        int count= jdbcTemplate.queryForObject(sql1, Integer.class);
        System.out.println(count);
        return user;
    }

 

 使用 jdbcTemplate 操作数据库: https://blog.csdn.net/weixin_44593925/article/details/125885327

 

参考: https://www.cnblogs.com/fps2tao/p/16707701.html

 

posted @ 2022-12-08 16:15  与f  阅读(448)  评论(0)    收藏  举报