新手详细讲解:Spring-jdbc简单的增删改查
简单看一下这次项目的目录:创建一个maven的quickstart项目
文件 | 作用 |
---|---|
db.properties | 设置数据库连接属性 |
pom.xml | 项目所以依赖的架包 |
SpringJDBC.xml | 设置数据库连接属性 |
User.java | 数据库中表对应属性 |
UserRowMapper.java | 结果集封装成一个对象 |
UserDAO.java | 简单的数据业务操作 |
TestCase.java | 测试类 |
1.db.properties
设置数据库连接属性
2.pom.xml
导入项目需要的架包,保证联网的情况下,再保存,确保不会因为网络原因导致架包下载失败。(如果网络不稳定,比较麻烦,后期maven会报各种错)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.haihsi</groupId>
<artifactId>SpringJDBC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringJDBC</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--
导入单元测试的jar包
-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.2</version>
</dependency>
<!--
导入SpringMVC的jar包
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<!--
数据库驱动的jar包
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!--
数据库连接池的jar包
-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--
添加spring-jdbc的jar包
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
</dependencies>
</project>
3.SpringJDBC.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<!-- 此处设置spring注解扫描的包-->
<context:component-scan base-package="com.haishi"/>
<!-- 此处设置数据库连接属性,对应db.properties文件夹-->
<util:properties id="db" location="classpath:db.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="#{db.driver}"/>
<property name="url" value="#{db.url}"/>
<property name="username" value="#{db.user}"/>
<property name="password" value="#{db.pwd}"/>
</bean>
<!-- 此处配置jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
4.User.java
实体类,对应数据表中的属性,谁知get,set方法
package com.haishi.entity;
import java.sql.Timestamp;
public class User{
private Integer id;
private String userName;
private String pwd;
private String phone;
private String email;
private Timestamp time;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Timestamp getTime() {
return time;
}
public void setTime(Timestamp time) {
this.time = time;
}
public String toString(){
return "User [id=" + id + ", userName=" + userName + ", pwd=" + pwd + ", phone=" + phone + ", email=" + email
+ ", time=" + time + "]";
}
}
5.UserRowMapper .java
package com.haishi.entity;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
public class UserRowMapper
implements RowMapper<User>{
/**
* 该方法用于将jdbcTemplate查询的
* 结果集封装成一个user对象
*
* ResultSet rs:查询的结果集
* int index:每一行记录的索引
* 即第一行记录index的值是0
*/
@Override
public User mapRow
(ResultSet rs,int index)
throws SQLException{
User u=new User();
u.setId(rs.getInt("id"));
u.setUserName(rs.getString("user_name"));
u.setPwd(rs.getString("pwd"));
u.setEmail(rs.getString("email"));
u.setPhone(rs.getString("phone"));
u.setTime(rs.getTimestamp("time"));
return u;
}
}
6.UserDAO.java
具体的数据操纵
package com.haishi.DAO;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import com.haishi.entity.User;
import com.haishi.entity.UserRowMapper;
@Repository
public class UserDAO{
@Resource
private JdbcTemplate temp;
public List<User> findALL(){
String sql="select * from user_t";
UserRowMapper rowMapper=
new UserRowMapper();
List<User> list
=temp.query(sql,rowMapper);
return list;
}
public User findById(int id){
String sql="select * from user_t where id=?";
UserRowMapper rowMapper=
new UserRowMapper();
Object[] params=new Object[]{id};
User u
=temp.queryForObject(sql,params,rowMapper);
return u;
}
public void save(User u){
String sql="insert into user_t "
+ "values(null,?,?,?,?,now())";
Object[] params=new Object[]{
u.getUserName(),u.getPwd(),
u.getPhone(),u.getEmail()};
temp.update(sql,params);
}
public void update(User u){
String sql="update user_t set pwd=? "
+ "where user_name=?";
Object[] params=
new Object[]
{u.getPwd(),u.getUserName()};
temp.update(sql,params);
}
public void delete(int id){
String sql="delete from user_t where id=?";
Object[] params=new Object[]{id};
temp.update(sql,params);
}
}
7.TestCase.java
测试不同的方法解开对应的@test注解就可以了
package Test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.haishi.DAO.UserDAO;
import com.haishi.entity.User;
public class TestCase{
private static final String XML="SpringJDBC.xml";
private ApplicationContext ac;
@Before
public void init(){
ac=new ClassPathXmlApplicationContext(XML);
}
// @Test
public void test1(){
UserDAO dao
=ac.getBean("userDAO",UserDAO.class);
List<User> list=dao.findALL();
System.out.println(list);
}
@Test
public void test2(){
UserDAO dao
=ac.getBean("userDAO",UserDAO.class);
User u=dao.findById(1002);
System.out.println(u);
}
// @Test
public void test3(){
UserDAO dao
=ac.getBean("userDAO",UserDAO.class);
User u=new User();
u.setUserName("kitty");
u.setPhone("12112112111");
u.setPwd("123456");
u.setEmail("123@qq.com");
dao.save(u);
}
// @Test
public void test4(){
UserDAO dao
=ac.getBean("userDAO",UserDAO.class);
User u=new User();
u.setUserName("kitty");
u.setPhone("12112112111");
u.setPwd("654321");
u.setEmail("123@qq.com");
dao.update(u);
}
@Test
public void test5(){
UserDAO dao
=ac.getBean("userDAO",UserDAO.class);
dao.delete(1002);
}
}