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基本操作,包括如何配置数据源如Druid和C3P0,以及如何利用Apache Commons DBUtils简化数据库操作。 首先,JDBC提供了统一的接口,使得开发者无需关心底层数据库的具体实现,即可...
简单易用的数据库封装操作,包含数据库连接池的基本实现,数据库连接可重用,所有的操作都脱离源生JDBC操作,开发人员只需要熟悉Java集合的用法,会写Sql即可轻松的使用该封装好的JDBC API写出合理的代码。...
本篇文章将详细讲解如何使用JDBC进行Oracle数据库的增删改查操作。 ### 1. JDBC驱动与连接 首先,我们需要在项目中引入Oracle的JDBC驱动,通常为ojdbc.jar。当项目运行时,通过`Class.forName()`加载驱动,然后...
**一、JDBC基本操作流程** 1. **加载驱动**:使用`Class.forName()`方法加载数据库驱动,例如`Class.forName("com.mysql.jdbc.Driver")`。 2. **建立连接**:通过`DriverManager.getConnection()`方法建立与数据库...
JDBC 基本操作的使用 JDBC(Java Database Connectivity)是 Java 语言官方定义的一系列接口,用于连接和操作数据库。下面是 JDBC 基本操作的使用方法: 一、注册驱动 在使用 JDBC 程序之前,需要注册驱动以建立...
#### 四、JDBC基本操作流程 1. **加载驱动**:通过`DriverManager.registerDriver()`方法注册数据库驱动。 2. **建立连接**:使用`DriverManager.getConnection(url, user, password)`方法建立与数据库的连接。 3. ...
2. **JDBC基本操作流程** 使用JDBC通常遵循以下步骤: - 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` - 建立连接:`Connection conn = DriverManager.getConnection(url, username, password)` - 创建...
### 一、JDBC基本操作流程 1. **导入JDBC库**:首先,你需要在项目中引入JDBC相关的jar包,通常在`java.sql`包中,比如`mysql-connector-java`。 2. **加载数据库驱动**:根据JDBC版本的不同,加载驱动的方式也会...
**达梦数据库JDBC详解** 达梦数据库JDBC(Java Database Connectivity)是连接Java应用程序与达梦数据库系统的...在使用过程中,确保正确配置驱动、理解JDBC基本操作以及善用连接池,将有助于提升应用的性能和稳定性。
JDBC 基本操作 一旦建立了数据库连接,就可以执行 SQL 查询和其他操作。常见的 JDBC 操作包括查询数据、插入记录、更新记录以及删除记录等。 **4.1 执行查询** 执行 SQL 查询通常涉及到以下几个步骤: 1. 创建 ...
三、JDBC基本操作步骤 1. 加载驱动:使用Class.forName()方法加载对应的JDBC驱动。 2. 建立连接:通过DriverManager.getConnection()方法获取数据库连接。 3. 创建Statement/PreparedStatement:根据需求创建...
**JDBC基本操作步骤** 1. **加载驱动**:使用`Class.forName()`方法加载JDBC驱动。 2. **建立连接**:通过`DriverManager.getConnection()`方法创建到数据库的连接。 3. **创建Statement或PreparedStatement对象*...
**JDBC基本操作步骤** 1. 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` 2. 获取连接:`Connection conn = DriverManager.getConnection(url, username, password)` 3. 创建Statement或PreparedStatement对象...
本文将深入探讨JDBC的基本操作、包装机制以及如何实现简单的对象关系(OR)映射,同时也会提及外加的爬虫技术。 首先,JDBC操作的基本步骤包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL...
**JDBC基本操作** 使用JDBC,开发者可以执行以下数据库操作: 1. **建立连接**:`Connection conn = DriverManager.getConnection(url, user, pass);` 2. **创建Statement**:`Statement stmt = conn....
1. **JDBC基本操作流程**: - 加载驱动:使用`Class.forName()`方法加载对应的数据库驱动。 - 获取连接:通过`DriverManager.getConnection()`方法获取数据库连接。 - 创建Statement或PreparedStatement:根据...
2. **JDBC基本操作步骤** - 导入JDBC驱动库:`import java.sql.*;` - 加载/注册驱动:`Class.forName("com.mysql.jdbc.Driver");` - 创建数据库连接:`Connection conn = DriverManager.getConnection(url, ...
2. **JDBC基本操作步骤**: - 加载驱动:使用Class.forName()方法加载对应数据库的JDBC驱动。 - 建立连接:通过DriverManager.getConnection()方法创建数据库连接。 - 创建Statement/PreparedStatement对象:用于...
下面将详细阐述JDBC操作数据库的基本步骤以及一些关键知识点。 1. **加载数据库驱动**: - 在开始数据库操作前,必须先加载对应的数据库驱动。在Java中,这通常通过`Class.forName()`方法完成。例如,对于Oracle...
综上所述,"JDBC演示代码1.zip"中的示例将涵盖以上提到的JDBC基本操作,为开发者提供了一个实用的起点,以便理解和实践Java与MySQL数据库的交互。通过这些代码,你可以深入理解JDBC的工作原理,掌握如何在Java程序中...