Java进阶知识24 Spring对JDBC的支持
1、最主要的代码
Spring 配置文件(beans.xml)
1 <!-- 连接池 -->2 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
3 <!-- 注册驱动 -->
4 <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
5 <!-- 数据库连接 -->
6 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/school"></property>
7 <!-- 用户 -->
8 <property name="user" value="root"></property>
9 <!-- 密码 -->
10 <property name="password" value="123456"></property>
11 <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
12 <property name="initialPoolSize" value="3"></property>
13 <!--连接池中保留的最大连接数。Default: 15 -->
14 <property name="maxPoolSize" value="100"></property>
15 <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
16 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
17 如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
18 <property name="maxStatements" value="200"></property>
19 <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
20 <property name="acquireIncrement" value="2"></property>
21 </bean>
22
23 <!-- Spring提供的,用来代替JDBC连接数据库等操作 -->
24 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
25 <property name="dataSource" ref="dataSource"></property>
26 </bean>
27
28 <!-- Dao层 -->
29 <bean id="userDao" class="com.shore.dao.impl.UserDao">
30 <!-- jdbcTemplate:Spring提供的,用来 在做CRUD操作时,替代打开/获取连接等等(Connection、Statement、ResultSet),固定步骤 -->
31 <property name="jdbcTemplate" ref="jdbcTemplate"></property>
32 </bean>
2、完整代码例子
我用到的jar包:
实例演示:
数据库建表语句
1 create database school; -- 创建数据库2 use school; -- 使用school数据库
34 create table user( -- 创建user表
5 id int(4) primary key auto_increment,
6 name varchar(20) not null,
7 age int(4) not null
8 );
User 实体类
1 package com.shore.entity;2
3 /**
4 * @author DSHORE/2019-11-9
5 *
6 */
7 public class User {
8 private Integer id;
9 private String name;
10 private Integer age;
11
12 public Integer getId() {
13 return id;
14 }
15 public void setId(Integer id) {
16 this.id = id;
17 }
18
19 public String getName() {
20 return name;
21 }
22 public void setName(String name) {
23 this.name = name;
24 }
25
26 public Integer getAge() {
27 return age;
28 }
29 public void setAge(Integer age) {
30 this.age = age;
31 }
32 }
IUserDao 接口类
1 package com.shore.dao;2
3 import java.util.List;
4
5 import com.shore.entity.User;
6
7 /**
8 * @author DSHORE/2019-11-9
9 *
10 */
11 public interface IUserDao {
12
13 public void save(User user);//增
14 public void delete(Integer id);//删
15 public void update(User user);//改
16 public User findById(Integer id);//根据id查询
17 public List<User> listAll();//查询所有
18 }
UserDao 接口实现类
1 package com.shore.dao.impl;2
3 import java.sql.ResultSet;
4 import java.sql.SQLException;
5 import java.util.List;
6
7 import org.springframework.jdbc.core.JdbcTemplate;
8 import org.springframework.jdbc.core.RowMapper;
9
10 import com.shore.dao.IUserDao;
11 import com.shore.entity.User;
12
13 /**
14 * @author DSHORE/2019-11-9
15 *
16 */
17 public class UserDao implements IUserDao {
18 //注入jdbcTemplate(Spring提供的)
19 private JdbcTemplate jdbcTemplate;
20 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
21 this.jdbcTemplate = jdbcTemplate;
22 }
23
24 @Override //添加
25 public void save(User user) {
26 String sql = "insert into user(name,age) values(?,?)";
27 jdbcTemplate.update(sql, user.getName(),user.getAge());
28 }
29
30 @Override //删除
31 public void delete(Integer id) {
32 jdbcTemplate.update("delete from user where id = ?", id);
33 }
34
35 @Override //修改
36 public void update(User user) {
37 String sql = "update user set age = ? where id = ?";
38 jdbcTemplate.update(sql, user.getAge(), user.getId());
39 }
40
41 @Override //根据id查询
42 public User findById(Integer id) {
43 String sql = "select * from user where id=?";
44 List<User> list = jdbcTemplate.query(sql, new MyResult(), id);
45 if (list != null && list.size() > 0) {
46 return list.get(0);
47 }
48 return null;
49 }
50
51 @Override //查询所有
52 public List<User> listAll() {
53 String sql = "select * from user";
54 List<User> list = jdbcTemplate.query(sql, new MyResult());
55 return list;
56 }
57
58 //内部类 此处的作用:把findById()和listAll()的公共部分代码提出来
59 class MyResult implements RowMapper<User>{
60 @Override
61 // 要把每一行封装成一个User对象
62 public User mapRow(ResultSet rs, int rowNum) throws SQLException {
63 User user = new User();
64 user.setId(rs.getInt("id"));
65 user.setName(rs.getString("name"));
66 return user;
67 }
68 }
69 }
Spring 配置文件(beans.xml)
1 <?xml version="1.0" encoding="UTF-8"?>2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xsi:schemaLocation="
7 http://www.springframework.org/schema/beans
8 http://www.springframework.org/schema/beans/spring-beans.xsd
9 http://www.springframework.org/schema/tx
10 http://www.springframework.org/schema/tx/spring-tx.xsd
11 http://www.springframework.org/schema/aop
12 http://www.springframework.org/schema/aop/spring-aop.xsd">
13
14 <!-- 连接池 -->
15 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
16 <!-- 注册驱动 -->
17 <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
18 <!-- 数据库连接 -->
19 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/school"></property>
20 <!-- 用户 -->
21 <property name="user" value="root"></property>
22 <!-- 密码 -->
23 <property name="password" value="root"></property>
24 <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
25 <property name="initialPoolSize" value="3"></property>
26 <!--连接池中保留的最大连接数。Default: 15 -->
27 <property name="maxPoolSize" value="100"></property>
28 <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
29 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
30 如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
31 <property name="maxStatements" value="200"></property>
32 <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
33 <property name="acquireIncrement" value="2"></property>
34 </bean>
35
36 <!-- Spring提供的,用来代替JDBC连接数据库等操作 -->
37 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
38 <property name="dataSource" ref="dataSource"></property>
39 </bean>
40
41 <!-- Dao层 -->
42 <bean id="userDao" class="com.shore.dao.impl.UserDao">
43 <!-- jdbcTemplate:Spring提供的,用来 在做CRUD操作时,替代打开/获取连接等等(Connection、Statement、ResultSet),固定步骤 -->
44 <property name="jdbcTemplate" ref="jdbcTemplate"></property>
45 </bean>
46 </beans>
测试类
1 package com.shore.test;2
3 import java.util.List;
4
5 import org.junit.Test;
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.context.support.ClassPathXmlApplicationContext;
8
9 import com.shore.dao.IUserDao;
10 import com.shore.entity.User;
11
12 /**
13 * @author DSHORE/2019-11-9
14 *
15 */
16 public class MyTest {
17
18 private static ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
19
20 @Test //添加
21 public void testSaveUser() {
22 User user = new User();
23 user.setName("李四");//插入两条数据:张三,18 和 李四,20
24 user.setAge(20);
25 IUserDao userDao = (IUserDao) context.getBean("userDao");
26 userDao.save(user);
27 }
28
29 @Test //删除
30 public void testDelete() {
31 IUserDao userDao = (IUserDao) context.getBean("userDao");
32 userDao.delete(3);
33 }
34
35 @Test //修改
36 public void testUpdate() {
37 IUserDao userDao = (IUserDao) context.getBean("userDao");
38 User user = userDao.findById(2);
39 user.setAge(26);
40 userDao.update(user);
41 }
42
43 @Test //根据id查询
44 public void testFindById() {
45 IUserDao userDao = (IUserDao) context.getBean("userDao");
46 User user = userDao.findById(2);
47 System.out.println(user); //返回值:com.shore.entity.User@7df1bd98
48 }
49
50 @Test //查询所有
51 public void testListAll() {
52 IUserDao userDao = (IUserDao) context.getBean("userDao");
53 List<User> users = userDao.listAll();
54 System.out.println(users); //返回值:[com.shore.entity.User@58ca3783, com.shore.entity.User@4402a6ff]
55 }
56 }
以上代码,均测试成功。
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/11827880.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
以上是 Java进阶知识24 Spring对JDBC的支持 的全部内容, 来源链接: utcz.com/z/393888.html