- 前言
- 第一部分 核心实现
- 第 1 章 Spring 整体架构和环境搭建
- 第 2 章 容器的基本实现
- 第 3 章 默认标签的解析
- 第 4 章 自定义标签的解析
- 第 5 章 bean 的加载
- 第 6 章 容器的功能扩展
- 第 7 章 AOP
- 第二部分 企业应用
- 第 8 章 数据库连接 JDBC
- 第 9 章 整合 MyBatis
- 第 10 章 事务
- 第 11 章 SpringMVC
- 第 12 章 远程服务
- 第 13 章 Spring 消息
8.1 Spring 连接数据库程序实现(JDBC)
Spring 中的 JDBC 连接与直接使用 JDBC 去连接还是有所差别的,Spring 对 JDBC 做了大量封装,消除了冗余代码,使得开发量大大减小。下面通过一个小例子让大家简单认识 Spring 中的 JDBC 操作。
(1)创建数据表结构。
CREATE TABLE 'user' (
'id' int(11) NOT NULL auto_increment,
'name' varchar(255) default NULL,
'age' int(11) default NULL,
'sex' varchar(255) default NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)创建对应数据表的 PO。
public class User {
private int id;
private String name;
private int age;
private String sex;
//省略 set/get 方法
}
(3)创建表与实体间的映射。
public class UserRowMapper implements RowMapper {
@Override
public Object mapRow(ResultSet set, int index) throws SQLException {
User person = new User(set.getInt("id"), set.getString("name"), set
.getInt("age"), set.getString("sex"));
return person;
}
}
(4)创建数据操作接口。
public interface UserService {
public void save(User user);
public List<User> getUsers();
}
(5)创建数据操作接口实现类。
public class UserServiceImpl implements UserService {
private JdbcTemplate jdbcTemplate;
// 设置数据源
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public void save(User user) {
jdbcTemplate.update("insert into user(name,age,sex)values(?,?,?)",
new Object[] { user.getName(), user.getAge(),
user.getSex() }, new int[] { java.sql.Types.VARCHAR,
java.sql.Types.INTEGER, java.sql.Types.VARCHAR });
}
@SuppressWarnings("unchecked")
public List<User> getUsers() {
List<User> list = jdbcTemplate.query("select * from user", new UserRowMapper());
return list;
}
}
(6)创建 Spring 配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.Springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.Springframework.org/schema/beans
http://www.Springframework.org/schema/beans/Spring-beans-2.5.xsd
">
<!--配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/lexueba" />
<property name="username" value="root" />
<property name="password" value="haojia0421xixi" />
<!--连接池启动时的初始值 -->
<property name="initialSize" value="1" />
<!--连接池的最大值 -->
<property name="maxActive" value="300" />
<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减
少到 maxIdle 为止 -->
<property name="maxIdle" value="2" />
<!--最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="1" />
</bean>
<!--配置业务 bean:PersonServiceBean -->
<bean id="userService" class="service.UserServiceImpl">
<!--向属性 dataSource 注入数据源 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
(7)测试。
public class SpringJDBCTest {
public static void main(String[] args) {
ApplicationContext act = new ClassPathXmlApplicationContext("bean.xml");
UserService userService = (UserService) act.getBean("userService");
User user = new User();
user.setName("张三");
user.setAge(20);
user.setSex("男");
// 保存一条记录
userService.save(user);
List<User> person1 = userService.getUsers();
System.out.println("++++++++得到所有 User");
for (User person2 : person1) {
System.out.println(person2.getId() + " " + person2.getName()
+ " " + person2.getAge() + " " + person2.getSex());
}
}
}
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论