相关学习资料来源:黑马57期JavaWeb中的JDBCTemplate视频
package JDBCTemplate;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author pdzz
* @create 2019-12-22 16:39
*/
public class JDBCTemplate {
public static void main(String[] args) throws SQLException {
DataSource ds = new ComboPooledDataSource("otherc3p0");
for (int i = 1; i < 21; i++) {
Connection connection = ds.getConnection();
System.out.println(i+ ": " + connection);
if (i == 5){
connection.close();
}
}
}
}
c3p0-config.xml 文件 (需要注意的是:&要用“& a m p ;”代替)
需要注意的是:&要用“&”代替
代码:
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///world?useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true</property>
<property name="user">root</property>
<property name="password">Zzd3358575+</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.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///world?useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true</property>
<property name="user">root</property>
<property name="password">Zzd3358575+</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
Druid技术(来自阿里巴巴)
把创建连接(Connection)和close(归还到连接池的操作)都已经封装好了。
package JDBCSpringTemplate;
import Utils.JDBCUtils;
import domain.stu;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
/**
* @author pdzz
* @create 2019-12-23 16:50
*/
public class SpringTemplate {
private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
@Test
/**
*@Description 更新值
*@Param []
*@Return void
*@Author pdzz
*@Date 2019/12/23
*@Time 16:55
*/
public void test1(){
String sql = "update stu set name = 'pdzz' where id = 5";
int count = jdbcTemplate.update(sql);
System.out.println(count);
}
@Test
//添加记录
public void test2(){
String sql = "insert into stu values (6,'pdzz')";
int count = jdbcTemplate.update(sql);
System.out.println(count);
}
@Test
public void test3(){
String sql = "delete from stu where id = ?";
int count = jdbcTemplate.update(sql,5);
System.out.println(count);
}
@Test
public void test4(){
String sql = "select * from stu where id = ?";
Map<String, Object> map = jdbcTemplate.queryForMap(sql, 1);
System.out.println(map);
}
@Test
public void test5(){
String sql = "select * from stu where id = ? or id = ?";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql, 1, 3);
for (Map<String, Object> map:maps) {
System.out.println(map);
}
}
@Test
public void test6(){
String sql = "select * from stu";
List<stu> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<stu>(stu.class));
for (stu stu: list){
System.out.println(stu);
}
}
@Test
public void test7(){
String sql = "select count(id) from stu";
Long count = jdbcTemplate.queryForObject(sql, Long.class);
System.out.println(count);
}
}