JdbcTeplate

  JdbcTeplate

      Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作。

    准备工作:

       引入相关依赖

 

  <!-- Spring 持久化层支持jar包 -->
   <!-- Spring 在执行持久化层操作、与持久化层技术进行整合过程中,需要使用orm、jdbc、tx三个jar包 -->
   <!-- 导入 orm 包就可以通过 Maven 的依赖传递性把其他两个也导入 -->
<!--对象关系映射,间接的将spring-jdbc和spring-ts引入进来-->
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-orm</artifactId>
       <version>5.3.1</version>
   </dependency>
   <!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
<!--上下文,可以将ioc和aop核心依赖引入进来-->
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>5.3.1</version>
   </dependency>
   <!-- Spring 测试相关 -->
   <!--是spring整合junit的一个依赖,让测试类在spring测试环境中来执行,就不需要每一回获取ioc容器-->
   <!--直接通过依赖注入的方式获取ioc容器中的某个bean然后直接使用就行-->
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-test</artifactId>
       <version>5.3.1</version>
       <scope>test</scope>
   </dependency>
   <!-- junit测试 -->
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
       <scope>test</scope>
   </dependency>
   <!-- 数据源 -->
   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid</artifactId>
       <version>1.0.31</version>
   </dependency>
   <!-- 日志 -->
   <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <version>1.2.3</version>
   </dependency>
   <!-- Lombok -->
   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <version>1.18.12</version>
       <scope>provided</scope>
   </dependency>

 

      创建properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

 

      Spring 配置文件

        [1]配置数据源

<!-- 引入jdbc.properties (<导入外部属性文件) classpath:类路径-->
   <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
   <!-- 配置数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <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>

        [2]配置 JdbcTemplate

<!-- 配置 JdbcTemplate -->
<bean class="org.springframework.jdbc.core.JdbcTemplate">
   <!-- 装配数据源 -->
       <property name="dataSource" ref="dataSource"></property>
   </bean>

        测试

/**
* @RunWith:设置当前测试类的运行环境,指定当前测试类在spring的测试环境中执行
*         好处:可以通过注入的方式直接获取ioc容器中的bean
* @ContextConfiguration:设置Spring测试环境的配置环境
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:ApplicationContext.xml")
public class JdbcTemplateTest {
   //自动装配为当前属性赋值
   @Autowired
   private JdbcTemplate jdbcTemplate;
   @Test
   public void testInsert(){
       //update:增删改
       String sql="insert into t_user values(null,?,?,?,?,?)";
       jdbcTemplate.update(sql,"root","123",23,"女","123@qq.com");
  }
}

       查询

          实体类

public class User {
   private Integer id;
   private String username;
   private String password;
   private Integer age;
   private String gender;
   private String email;
  ...
}

       测试

 @Test
   public void testGetUserById(){
       String sql="select * from t_user where id=?";
       /**
        *   ②new BeanPropertyRowMapper:
        *   把查询出来的字段跟对应的实体类属性进行映射,默认映射关系(字段名跟属性名一致就能进行赋值)
        *   ③设置长度可变的参数列表,为当前sql语句中的占位符来进行赋值,例如查询id为1的数据
        */
       User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), 1);
       System.out.println(user);
  }
   @Test
   //多条数据为list集合
   public void testGetAllUser(){
       String sql="select * from t_user";
       List<User> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
       //通过forEach循环
       list.forEach(System.out::println);
  }
 
posted @ 2022-11-23 22:47  zjw_rp  阅读(146)  评论(0)    收藏  举报