1. JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作,可以方便对数据库的增删改查
1.1 对JdbcTemplate的准备工作
(1) 加入依赖
<dependencies>
<!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
<!-- Spring 持久化层支持jar包 -->
<!-- Spring 在执行持久化层操作、与持久化层(相当于jdbc的dao层)技术进行整合过程中,需要使用orm、jdbc、tx三个
jar包 -->
<!-- 导入 orm 包就可以通过 Maven 的依赖传递性把其他两个也导入 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.1</version>
</dependency>
<!-- Spring 测试相关 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.1</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
</dependencies>
(2) 创建\(jdbc.property\)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=root
不创建也可以,但是这样在spring配置文件中,这些就是写死的
(3) 配置\(Spring\)的配置文件
<!-- 导入外部属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置数据源 -->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置 JdbcTemplate,交给ioc容器管理 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 装配数据源 -->
<property name="dataSource" ref="druidDataSource"/>
</bean>
这里的逻辑是要使用\(JdbcTemplate\)需要使用数据源,我们则需要将数据源引入到项目中,故引入了\(druid\)数据池
- 延伸知识:什么是classpath
如果是纯\(java\)项目,则没有加前缀\(classpath\)的必要,但如果是\(web\)项目,则需要前缀指定类路径。
此po主讲得十分详细大佬的讲解,这里加点自己的理解。
开发时期的\(web\)项目路径如下图,但是在我们把项目打包后,是不存在\(webapp\)的路径的,我们的\(java\)和\(resource\)路径都被放在\(WEB-INF\)路径里
打包后的\(web\)项目路径,\(java\)和\(resource\)都被(编译)打包到了生产包的\(WEB-INF/classes/\)目录下;而原来\(WEB-INF\)下面的\(views\)和\(web.xml\)则仍然还是在\(WEB-INF\)下面。同时由\(maven\)引入的依赖都被放入到了\(WEB-INF/lib/\)下面。最后,编译后的\(class\)文件和资源文件都放在了\(classes\)目录下。
那么classPath是从哪里开始呢?就是指\(WEB-INF/classes/\)这个目录的路径.每当我们使用这个前缀时,只能指定一个文件的路径,如果指定多个文件的路径需要使用\(classpath*\)
最后我们说的\(web\)根路径到底在哪?也就是从\(ssmProject\)开始的路径(当前目录是META-INF和WEB-INF)