JDBC简单应用——Spring JdbcTemplate

工程目录

这里写图片描述

一、准备工作

1、导入JdbcTemplate相关的依赖jar包
- - c3p0依赖jar包*
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar
- -mysql驱动包*
mysql-connector-java-5.1.37-bin.jar
- -jdbcTemplate依赖jar包*
commons-logging-1.2.jar
spring-beans-5.0.0.RELEASE.jar
spring-core-5.0.0.RELEASE.jar
spring-jdbc-5.0.0.RELEASE.jar
spring-tx-5.0.0.RELEASE.jar

2、c3p0-config.xml配置文件

二、代码编写

1、数据源c3p0-config.xml

<c3p0-config>
   <!-- 使用默认的配置读取连接池对象 -->
   <default-config>
       <!--  连接参数 -->
       <property name="driverClass">com.mysql.jdbc.Driver</property>
       <property name="jdbcUrl">jdbc:mysql://localhost:3306/my_db</property>
       <property name="user">root</property>
       <property name="password">root</property>

       <!-- 连接池参数 -->
       <!--初始化申请的连接数量-->
       <property name="initialPoolSize">5</property>
       <!--最大的连接数量-->
       <property name="maxPoolSize">10</property>
       <!--超时时间-->
       <property name="checkoutTimeout">3000</property>
   </default-config>

   <named-config name="otherc3p0">
       <!--  连接参数 -->
       <property name="driverClass">com.mysql.jdbc.Driver</property>
       <property name="jdbcUrl">jdbc:mysql://localhost:3306/db3</property>
       <property name="user">root</property>
       <property name="password">root</property>

       <!-- 连接池参数 -->
       <property name="initialPoolSize">5</property>
       <property name="maxPoolSize">8</property>
       <property name="checkoutTimeout">1000</property>
   </named-config>
</c3p0-config>

2、User实体类

package com.mollen.demo04;

/**
* @ClassName:  User
* @Auther:     Mollen
* @CreateTime: 2018-09-10  10:46:21
* @Description:
*              User实体类<==>User表
*/
public class User {

   private String user;
   private int age;

   public User() {
   }

   public User(String user, int age) {
       this.user = user;
       this.age = age;
   }

   @Override
   public String toString() {
       return "User{" +
               "user='" + user + '\'' +
               ", age=" + age +
               '}';
   }

	//getter/setter...

}

2、JdbcTemplate测试类

package com.mollen.demo04;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.util.List;
import java.util.Map;

/**
* @ClassName:      JdbcTemplateTest
* @Auther:         Mollen
* @CreateTime:     2018-09-10  10:26:25
* @Description:       
*                  Spring  JdbcTemplate 测试
*/
public class JdbcTemplateTest {

   /**
    * 获取数据源
    */
   DataSource ds = new ComboPooledDataSource();

   /**
    * 创建JdbcTemplate对象
    */
   JdbcTemplate jtl = new JdbcTemplate(ds);

   /**
    * 1.新增数据
    */
   @Test
   public void test01() {
       int count = jtl.update("INSERT INTO user VALUES(?,?)", "wangwu", 25);
       System.out.println(count);

   /**
    * 2.删除数据
    */
   @Test
   public void test02() {
       int count = jtl.update("DELETE FROM user WHERE name = ?", "wangwu");
       System.out.println(count);
   }
   
   /**
    * 3.修改数据
    */
   @Test
   public void test03() {
       int count = jtl.update("UPDATE user SET age = ? WHERE name=?",30,"lisi" );
       System.out.println(count);
   }

   /**
    * 4.查询数据封装成map
    * 注意事项:最大查询记录只能是1条
    */
   @Test
   public void tes04(){
       Map<String, Object> userMap = jtl.queryForMap("SELECT * FROM user WHERE name=?", "lisi");
       System.out.println(userMap);
   }
   
   /**
    * 5.查询数据封装成list
    */
   @Test
   public void test05(){
       List<Map<String, Object>> list = jtl.queryForList("SELECT * FROM user");
       for (Map<String, Object> userMap : list) {
           System.out.println(userMap);
       }
   }
   /**
    * 6.查询数据封装成对象
    */
   @Test
   public void test06(){
       List<User> users = jtl.query("SELECT * FROM user", new BeanPropertyRowMapper<User>(User.class));
       for (User user : users) {
           System.out.println(user);
       }

   /**
    * 7.记录查询条数
    */
   @Test
   public void test07(){
       Long count = jtl.queryForObject("SELECT count(1) FROM user", Long.class);
       System.out.println(count);
   }
}


三、注意事项

1、数据源用的是c3p0,默认连接<default-config> 配置

2、查询数据封装map只能是一条

3、使用Spring JdbcTemplate框架 不用手动关闭数据库连接,查看源码可知框架内部已经对数据连接进行了关闭。

猜你喜欢

转载自blog.csdn.net/mollen/article/details/82587734
今日推荐