Spring-JDBC实现Contact的CRUD
Spring-JDBC完成Contact的CRUD。
两点注意:
1.log4j.properties文件不能少
2.注意导入的包之间的依赖关系以及版本要求。
项目结构:

主要文件:
建表脚本:
CREATE TABLE contact (
id int(10) unsigned NOT NULL auto_increment,
name varchar(45) NOT NULL,
address varchar(45) default NULL,
gender char(1) default 'M',
dob datetime default NULL,
email varchar(45) default NULL,
mobile varchar(15) default NULL,
phone varchar(15) default NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8
pom.xml
<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>MarkDemo</groupId>
<artifactId>SpringDAO</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build /> <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.1.RELEASE</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-dao</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.33</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5-pre9</version>
</dependency> </dependencies> </project>
properties文件
jdbc.properties ------------------------------------
mysql.driverClassName=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/test
mysql.username=root
mysql.password= log4j.properties # Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout # log4j.rootLogger=WARN, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
spring-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"> <!-- not property-placeholder -->
<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://localhost:3306/test"
p:username="root" p:password="111222" /> --> <context:property-placeholder location="classpath:jdbc.properties" />
<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${mysql.driverClassName}" p:url="${mysql.url}" p:username="${mysql.username}"
p:password="${mysql.password}" />. --> <!-- c3p0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />
<property name="driverClass" value="${mysql.driverClassName}" />
<property name="jdbcUrl" value="${mysql.url}" />
<property name="maxPoolSize" value="20" />
<property name="minPoolSize" value="2" />
<property name="initialPoolSize" value="2"/>
<property name="maxIdleTime" value="60"/>
</bean> </beans>
Contact.java
import java.sql.Date;
public class Contact {
private Integer id;
private String name;
private String address;
private String gender;
private Date dob;
private String email;
private String mobile;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
ContactRowMapper.java
--ContactRowMapper.java
import java.sql.ResultSet;
import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; public class ContactRowMapper implements RowMapper<Contact> { public Contact mapRow(ResultSet arg0, int arg1) throws SQLException { Contact contact = new Contact();
contact.setId(arg0.getInt("id"));
contact.setName(arg0.getString("name"));
contact.setAddress(arg0.getString("address"));
contact.setGender(arg0.getString("gender"));
contact.setDob(arg0.getDate("dob"));
contact.setEmail(arg0.getString("email"));
contact.setMobile(arg0.getString("mobile"));
contact.setPhone(arg0.getString("phone")); return contact;
} }
ContactsDAO.java
--ContactsDAO.java
import java.util.List; public interface ContactsDAO { Contact getContact(Integer id); Integer Create(Contact contact); Boolean Update(Contact contact); Boolean Delete(Integer id); List<Contact> Search(String name); List<Contact> getAllContacts(); }
ContactsDAOImpl.java
--ContactsDAOImpl.java
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder; public class ContactsDAOImpl extends JdbcDaoSupport implements ContactsDAO { public Contact getContact(Integer id) {
Contact contact = this.getJdbcTemplate().queryForObject("select * from contact where id=?", new Object[] { id }, new ContactRowMapper()); return contact;
} /**
* Add a new contact to database, and return the id.
*
* @author Mark
* @param Object
* of Contact
* @return [Integer] Auto Increment Key
* @see http://blog.chinaunix.net/uid-1848701-id-2825787.html
* */
public Integer Create(Contact contact) {
final Contact contact2;
contact2 = contact; if (contact.getId() != null)
throw new RuntimeException("contact with id " + contact.getId() + " is already existed."); // Object[] params = new Object[] { contact.getName(), contact.getAddress(), contact.getGender(), contact.getDob(), contact.getEmail(),
// contact.getMobile(), contact.getPhone() };
// int id = this.getJdbcTemplate().update("insert into contact(name, address, gender, dob, email, mobile, phone) values(?,?,?,?,?,?,?);", params); final String strSql = "insert into contact(name, address, gender, dob, email, mobile, phone) values(?,?,?,?,?,?,?);";
KeyHolder keyHolder = new GeneratedKeyHolder();
int id1 = this.getJdbcTemplate().update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
int i = 0;
java.sql.PreparedStatement ps = conn.prepareStatement(strSql, new String[] { "object_id" });
ps = conn.prepareStatement(strSql, Statement.RETURN_GENERATED_KEYS);
ps.setString(++i, contact2.getName());
ps.setString(++i, contact2.getAddress());
ps.setString(++i, contact2.getGender());
ps.setDate(++i, (Date) contact2.getDob());
ps.setString(++i, contact2.getEmail());
ps.setString(++i, contact2.getMobile());
ps.setString(++i, contact2.getPhone()); return ps;
}
}, keyHolder); return keyHolder.getKey().intValue(); } public Boolean Update(Contact contact) {
Object[] param = new Object[] { contact.getName(), contact.getAddress(), contact.getGender(), contact.getDob(), contact.getEmail(),
contact.getMobile(), contact.getPhone(), contact.getId() };
int count = this.getJdbcTemplate().update("update contact set name=?, address=?, gender=?, dob=?, email=?, mobile=?, phone=? where id=?", param); return count > 0 ? Boolean.TRUE : Boolean.FALSE;
} public Boolean Delete(Integer id) {
int count = this.getJdbcTemplate().update("delete from contact where id=?;", new Object[] { id }); return count > 0 ? Boolean.TRUE : Boolean.FALSE;
} public List<Contact> Search(String name) {
List<Contact> contactList = this.getJdbcTemplate().query("select * from contact where name like %?%;", new Object[] { name }, new ContactRowMapper()); return contactList;
} public List<Contact> getAllContacts() {
List<Contact> contactList = this.getJdbcTemplate().query("select * from contact;", new ContactRowMapper()); return contactList;
} }
ContactsDAOTestClient.java
--ContactsDAOTestClient.java
import org.springframework.context.ApplicationContext;
import java.sql.Date;
import javax.sql.DataSource;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class ContactsDAOTestClient { @SuppressWarnings("deprecation")
public static void main(String[] args) {
System.out.println("hello jdbc, see you tomorrow.");
ApplicationContext applicationContext = null; try {
applicationContext = new ClassPathXmlApplicationContext("classpath:spring-dao.xml");
} catch (Exception e) {
e.printStackTrace();
} DataSource dataSource = (DataSource) applicationContext.getBean("dataSource");
ContactsDAOImpl contactDao = new ContactsDAOImpl();
contactDao.setDataSource(dataSource); Contact contact = new Contact();
contact.setName("MARK");
contact.setAddress("WITH HOUSE");
contact.setGender("M");
contact.setDob(new Date(1986,11,07));
contact.setEmail("wancy86@sina.com");
contact.setMobile("13028865078");
contact.setPhone("0755-06326545"); //add a new contact
int id=contactDao.Create(contact); //get the inserted contact
contactDao.getContact(id); System.out.println(id); }
}
Spring-JDBC实现Contact的CRUD的更多相关文章
- Spring JDBC 随笔
Spring 框架,借助 JdbcTemplate 类来简化 java 访问 database. 完成一个增查改删(CRUD)的基本功能,借助下面 5 个角色来共同来完成. 1. object cla ...
- Spring JDBC 示例
在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常, ...
- 11.Spring——JDBC框架
1.DBC 框架概述 2.Spring JDBC 示例 3.Spring 中 SQL 的存储过程 1.DBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关 ...
- spring jdbc查询 依赖JdbcTemplate这个类模版封装JDBC的操作
package cn.itcast.spring.jdbc; import java.util.List; import org.springframework.jdbc.core.support.J ...
- Spring JDBC 例子
http://www.yiibai.com/spring/spring_jdbc_example.html 要了解有关Spring JDBC框架与JdbcTemplate类的概念,让我们写这将实现所有 ...
- Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate(转)
今天看了下Spring的源码——关于JDBC的"薄"封装,Spring 用一个Spring JDBC模板类来封装了繁琐的JDBC操作.下面仔细讲解一下Spring JDBC框架. ...
- JDBC(三)----Spring JDBC(JDBCTemplate)
## Spring JDBC * Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发 1.步骤 1.导入jar包 2.创建JDBCTemplate对象 ...
- Spring JDBC 框架 简介
在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等. 但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常 ...
- 一文学会Spring JDBC 使用
Spring JDBC 1.JDBC JDBC 就是 数据库开发 操作的 代名词,因为只要是现代商业项目的开发那么一定是离不开 数据库 的,不管你搞的是什么,只要是想使用动态的开发结构,那么一定就是 ...
随机推荐
- 获取基于Internet Explorer_Server的聊天窗口内容
假设在得到窗体中控件的句柄(通过SPY++)的前提下,如果是像文本框这种控件,只要用SendMessage就可得到文本了,但是对于聊天记录窗口却行不通(返回空值),因为那其实是一个内置浏览器Inter ...
- Ubuntu12.04下编译OpenCv2.4.9程序
引用地址http://blog.163.com/huai_jing@126/blog/static/171861983201311103411229/ 方法1:直接命令编译: g++ main.cpp ...
- phpcms V9二次开发之联动菜单筛选 包括box字段的多选 单选 筛选教程
{php $theurl = "index.php?m=content&c=index&a=lists&catid=$catid";} {php $bran ...
- Cookie与Session的区别-总结很好的文章
Cookie与Session的区别-总结很好的文章 本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对 ...
- 从头安装及配置PL/SQL Developer
原文地址:http://lightguide.blog.51cto.com/3121539/1140588 因为自己安装及配置中走了不少弯路,搜索网上的文档大部分没有包含oralce client的安 ...
- Eclipse侧边栏Outline设置字体
Eclipse的Outline,Project Explorer,Call Hierarchy等小窗口是很方便的功能,但是遇到函数名或文件名很长的情况,就只能显示前半段.尽管Eclipse的自定义程度 ...
- Visual Studio2013(Update4)无法生成依赖项关系图解决方案
今天为了看别人写的一套框架,就琢磨着有没视图的方式去看别人每个类和方法之间的调用和继承关系.这个时候发现了一个VS2013自带的功能: 带着兴奋的心情小手一抖一点... 我等呀等,等呀等.... 尼玛 ...
- [Laravel-Swagger]如何在 Laravel 项目中使用 Swagger
如何在 Laravel 项目中使用 Swagger http://swagger.io/getting-started/ 安装依赖 swagger-php composer require zirco ...
- MVC4 学习备忘
WebConfig文件里添加数据库链接字符: <add name="MovieDBContext(可以自己取字符串名字)" connectionString="Da ...
- PHPBB公布新的维护版本
9月28日,PHPBB官方网站公布了新PHPBB的最新消息.这个版本命名为:"Richard 'D¡cky' Foote",版本号为3.0.12.据官方的说明,“这个版本是一个维护 ...