Spring03-使用注解配与JdbcTemplate

xml配置文档?🐕都不写。

我觉得我们应该学习一下,我们非常熟悉配置xml的那一套...

用注解配置bean

按照Spring的流程,现在应该学习如何使用注解来配置bean了。

使用前先在xml(逃不过的xml)中开启自动扫包。

  • beans的属性里加上:xmlns:context="http://www.springframework.org/schema/context"
  • 然后再在beans里面写一个标签:<context:component-scan base-package="这里写要扫描的包名"></context:component-scan>
  • 在需要实现类名前加上@Component("studentDaoImpl")注解就行了。这句话就在xml写的<bean id = "studentDaoImpl" class="com.yanqun.annotation.dao.StudentDaoImpl">

这里注解@Component就相当于一个bean,但Component代表的意思太广泛了,于是多出来了三个更细化的注解:@Repository、@Service、@Controller。它们三个的底层实现都和@Component是一样的,其实就只是换了个名字。

用注解实现JdbcTemplate

什么是事务?简单来说,一个事务里面一般有多条sql命令,而执行事务的特点就是 要么里面的sql命令全部执行成功,要么全部执行失败,存在执行到一半就不管了的情况。

具体步骤:

先导包 spring-tx-4.3.9.RELEASE.jar(jdbc事务包);mysql-connector-java-8.0.12.jar,mysql的驱动包;spring-jdbc-4.3.9.RELEASE.jar,看名字就知道这是什么包。

配置xml
这个xml最好是从下往上看,最下面的studentDaoImplbean有个字段叫jdbcInjection,它依赖上面的jdbcTemp;然后jdbcTemp里面又有一个dataSource字段,这个字段依赖名为datasssbean,我们就需要在上面再配置一个beandataSource依赖。从下往上,多看几遍。

    <!-- JdbcTemplate配置————开始-->
    <!-- jdbc数据源配置,这个dataSource负责链接数据库 -->
        <bean id="datasss" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
            <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;serverTimezone=GMT%2B8"></property>
            <property name="username" value="root"></property>
            <property name="password" value = "root"></property>
        </bean>
        
        <!-- jdbc模板配置,它有个dataSource字段依赖着datasss-->
        <bean id="jdbcTemp" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="datasss"></property>
        </bean>
        
        <!--jdbc要注入的地方,它的字段依赖jdbcTemp的bean -->
        <bean id="studentDaoImplbean" class="com.yanqun.annotation.dao.StudentDaoImpl">
            <property name="jdbcInjection" ref="jdbcTemp"></property>
        </bean>
        
    <!-- JdbcTemplate配置————结束 -->

配置这个遇到了两个错误,其中一个还有点尴尬😅。

  • mysql时区 一开始因为没有加上时区配置,再加上mysql驱动包版本有点高,就给我报时区错误。后面加上?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;serverTimezone=GMT%2B8,就好了
  • 空指针,这个纯粹是个人原因的失误。我发现我的bean名字只能是studentDaoImplbean,否则就会给我报空指针,开始还以为是jdbcTemplate没有注入成功,后来发现结果是getBean("studentDaoImplbean")这个方法原因。我传的字符串肯定需要和bean对应起来,不然肯定找不到那个bean啊。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容