package com.lxf.domain:
package com.lxf.domain;
import java.util.Date;
public class User {
private int id;
private String name;
private Date birthday;
private float money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
public String toString(){
String information = getId()+" "+getName()+" "+getBirthday()+" "+getMoney();
return information;
}
}
package com.lxf.dao:
异常类:
package com.lxf.dao;
public class DaoException extends RuntimeException{
private static final long serialVersionUID = 1L;
public DaoException(){}
public DaoException(String message){
super(message);
}
public DaoException(Throwable cause){
super(cause);
}
public DaoException(String message,Throwable cause){
super(message,cause);
}
}
工厂模式工厂类:
package com.lxf.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class DaoFactory {
private static UserDao userDao = null;
private static DaoFactory instance = new DaoFactory();
private DaoFactory() {
try (InputStream inStream = DaoFactory.class.getClassLoader()
.getResourceAsStream("daoconfig.properties")) {
Properties prop = new Properties();
prop.load(inStream);
String userDaoClass = prop.getProperty("userDaoClass");
userDao = (UserDao) Class.forName(userDaoClass).newInstance();
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException | IOException e) {
throw new ExceptionInInitializerError(e);
}
}
public static DaoFactory getInstance() {
return instance;
}
public UserDao getUserDao() {
return userDao;
}
}
工厂类的daoconfig.properties文件:
userDaoClass=com.lxf.dao.impl.UserDaoJdbcImpl
接口:
package com.lxf.dao;
import com.lxf.domain.User;
public interface UserDao {
//增加用户
public void addUser(User user);
//根据Id获取用户
public User getUser(int userId);
//根据用户名获取用户
public User findUser(String loginName);
//更新用户
public void update(User user);
//删除用户
public boolean delete(User user);
}
package com.lxf.dao.impl:
接口的实现:
package com.lxf.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.lxf.dao.DaoException;
import com.lxf.dao.UserDao;
import com.lxf.domain.User;
import com.lxf.jdbc.JdbcUtils;
public class UserDaoJdbcImpl implements UserDao {
@Override
public void addUser(User user) {
String sql = "insert into user(name,birthday,money)values(?,?,?)";
try (Connection conn = JdbcUtils.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, user.getName());
ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
ps.setFloat(3, user.getMoney());
ps.executeUpdate();
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
}
@Override
public User getUser(int userId) {
User user = null;
String sql = "select id,name,birthday,money from user where id=?";
try (PreparedStatement ps = JdbcUtils.getConnection().prepareStatement(
sql);) {
// 处理结果
ps.setInt(1, userId);
try (ResultSet rs = ps.executeQuery();) {
while (rs.next()) {
user = mappingUser(rs);
}
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
return user;
}
@Override
public User findUser(String loginName) {
User user = null;
String sql = "select id,name,birthday,money from user where name=?";
try (PreparedStatement ps = JdbcUtils.getConnection().prepareStatement(
sql);) {
ps.setString(1, loginName);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
user = mappingUser(rs);
}
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
return user;
}
@Override
public void update(User user) {
String sql = "update user set name=?,birthday=?,money=? where id=?";
try (PreparedStatement ps = JdbcUtils.getConnection().prepareStatement(
sql);) {
ps.setString(1, user.getName());
ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
ps.setFloat(3, user.getMoney());
ps.setInt(4, user.getId());
ps.executeUpdate();// 执行语句,返回受影响的行数
} catch (Exception e) {
throw new DaoException(e.getMessage(), e);
}
}
@Override
public boolean delete(User user) {
boolean flag = false;
String sql = "delete from user where id=" + user.getId();
try (Connection conn = JdbcUtils.getConnection();
Statement st = conn.createStatement();) {
int i = st.executeUpdate(sql); // 执行语句,返回受影响的行数
if (i >= 0) {
flag = true;
}
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
return flag;
}
private User mappingUser(ResultSet rs) throws SQLException {
User user;
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setBirthday(rs.getDate("birthday"));
user.setMoney(rs.getFloat("money"));
return user;
}
}
一个简单的测试类:
package com.lxf.dao;
import java.util.Date;
import com.lxf.dao.impl.UserDaoJdbcImpl;
import com.lxf.domain.User;
public class UserDaoTest {
public static void main(String[]args){
UserDao userDao = DaoFactory.getInstance().getUserDao();
sop(userDao.getUser(1));
}
public static void sop(Object obj){
System.out.println(obj);
}
}
代码有点基础,贴出来怕自己忘记,没有贴出数据库连接代码。在上一篇博客。
如果发现有需要更改的地方,请及时指出,我不胜感激。
分享到:
相关推荐
简单易用的数据库封装操作,包含数据库连接池的基本实现,数据库连接可重用,所有的操作都脱离源生JDBC操作,开发人员只需要熟悉Java集合的用法,会写Sql即可轻松的使用该封装好的JDBC API写出合理的代码。...
演示了JDBC的基本使用方法,以及Druid和C3P0数据源的使用方法。 该示例是基于命令行窗口的CRUD操作。 示例最后演示了Apache Commons DBUtils开源工具类的使用方法。
数据库orcle,道理其实都一样,会这个就OK了。JDBC的基本操作。
JDBC基本操作,及批处理操作
jdbc操作基本操作包装 实现简单的OR映射,能实现java对象与数据库之间的映射和自动装载 轻量级别的数据库操作 外加爬虫
JDBC的学习资料,里面有JDBC基本操作的学习PPT文件
(3)掌握可滚动和可更新的结果集的基本操作方法; (4)理解JDBC中实现事务处理的基本方法; (5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法...
// 对数据库进行插入,更新,删除等操作时用executeUpdate()返回int型。 int i = ste.executeUpdate(); // 对数据库进行查看操作时用executeQuery()返回ResultSet结果集。 ResultSet res = ste.executeQuery(); 5....
JDBC数据库连接基本操作,各种数据库,不同数据库连接包的不同操作,初学者实用!
jdbc基础,包含基本概念、数据库连接操作、JDBC常用接口、与oracle/mysql/db2创建连接、Statement、PreparedStatement会话使用、Clob/Blob大文件处理、批处理操作等。
所有的JDBC应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。下面我们就来仔细看一看每一个步骤:其实按照上面所说每个...
jdbc增删改查基本操作的使用
String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+dbPath; cn = DriverManager.getConnection(dbUrl); pstmt = cn.prepareStatement("select PCity from shouji where ?=PhoneNo"); ...
第3章 JDBC3.0 API数据库开发基本操作 3.1 数据库用例说明 3.2 与数据库建立连接 3.2.1 JDBC URL 3.2.2 连接事件(Connection Event) 3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 ...
(1)掌握通过JDBC方式操作数据库的基本步骤。 (2)掌握增、删、改记录的方法。 (3)掌握查询记录以及遍历查询结果的方法。 2.实验内容 实验题1:学生信息管理函数。 实验题2:向student表连续插入5条记录,使用...
2、JDBC操作基本流程: 1>.导入驱动:实例化时自动向DriverManager注册(DriverManager.registerDriver()) <1>.Class.forName(driver) <2>.Class.forName(driver).newInstance() <3>.new driver() 2>.取得...
图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本数据库操作。 图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本数据库操作。 图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本...
JDBC的相关操作文档!有关一些基本的操作!亲们 还在等什么 !
JDBC(Java Database Connectivity, Java 数 据 库 连 接)是 一 种可用于执行 SQL 语句的 Java API(Application Programming ...JDBC 的基本层次结构由 Java 程序、JDBC 驱动程序管理器、驱动程序和数据库四部分组成
关于使用JDBC的一些小Demo.主要是关于使用基本的JDBC进行增删改查操作,还有使用数据库连接池技术进行连接,最后写了几个关于JDBCTemplate的小Demo