Java Servlet DAO实践(二)
Java Servlet DAO实践(二)
DAO连接类
package com.seller.servlets.dao; import java.sql.*; public class DataBaseConnection {
private final String DBDRIVER = "com.mysql.jdbc.Driver";
private final String DBURL = "jdbc:mysql://localhost:3306/javaweb";
private final String DBUSER = "root";
private final String DBPASSWORD = "toor";
private Connection conn = null; public DataBaseConnection(){
try{
Class.forName(DBDRIVER);
this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
}
catch (Exception e){
System.out.println("驱动加载失败");
}
} public Connection getConnection(){
return conn;
} public void close(){
try{
conn.close();
}
catch (Exception e){
System.out.println("数据库连接关闭失败");
}
}
}
DAO VO类(对应表字段)
package com.seller.servlets.dao; public class User {
private int userid;
private String username;
private String password;
public int getUserid(){
return userid;
} public void setUserid(int userid){
this.userid = userid;
} public String getUsername(){
return username;
} public void setUsername(String username){
this.username = username;
} public String getPassword(){
return password;
} public void setPassword(String password){
this.password = password;
}
}
DAO 接口类 (CURD操作定义)
package com.seller.servlets.dao;
import java.util.*; public interface UserDAO {
public void insert(User user) throws Exception;
public void update(User user) throws Exception;
public void delete(int userid) throws Exception;
public User queryById(int userid) throws Exception;
public List queryAll() throws Exception;
}
DAO 接口实现类(CURD操作实现)
package com.seller.servlets.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; public class UserDAOImpl implements UserDAO { // 添加操作
public void insert(User user) throws Exception{
String sql = "INSERT INTO user(username, password) VALUES(?,?)";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null; try{
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.executeUpdate();
pstmt.close();
}catch (Exception e){
throw new Exception("操作出现异常");
}
finally{
dbc.close();
}
} // 修改操作
public void update(User user) throws Exception{
String sql = "UPDATE user SET username=?, password=? WHERE userid=?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null; try{
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(1, user.getPassword());
pstmt.setInt(3, user.getUserid());
pstmt.executeUpdate();
pstmt.close();
}
catch (Exception e){
throw new Exception("操作出现异常");
}
} // 删除操作
public void delete(int userid) throws Exception{
String sql = "DELETE FROM user WHERE userid=?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try{
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setInt(1, userid);
pstmt.executeUpdate();
pstmt.close();
}catch (Exception e){
throw new Exception("操作出现异常");
}
finally{
dbc.close();
}
} // 按ID查询
public User queryById(int userid) throws Exception{
User user = null;
String sql = "SELECT * FROM user WHERE userid=?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try{
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
user = new User();
user.setUserid(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
}
rs.close();
pstmt.close();
}catch (Exception e){
throw new Exception("操作出现异常");
}
finally{
dbc.close();
}
return user; } public List<User> queryAll() throws Exception{
List<User> all = new ArrayList<User>();
String sql = "SELECT * FROM user";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null; try{
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
User user = new User();
user.setUserid(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
all.add(user);
}
rs.close();
}catch (Exception e){
throw new Exception("操作出现异常");
}
finally{
dbc.close();
}
return all;
} }
DAO工厂类(封装方便调用)
package com.seller.servlets.dao; public class DAOFactory {
public static UserDAO getUserDAOInstance(){
return new UserDAOImpl();
} }
Servlet 控制器调用DAO操作
package com.seller.servlets; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.seller.servlets.dao.*; @WebServlet("/addUser")
public class addUser extends HttpServlet {
private static final long serialVersionUID = 1L; public addUser() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserDAO userDAO = DAOFactory.getUserDAOInstance();
User user = new User();
user.setUsername("hello");
user.setPassword("12356");
try {
userDAO.insert(user);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
Java Servlet DAO实践(二)的更多相关文章
- Java开发最佳实践(二) ——《Java开发手册》之"异常处理、MySQL 数据库"
二.异常日志 (一) 异常处理 (二) 日志规约 三.单元测试 四.安全规约 五.MySQL数据库 (一) 建表规约 (二) 索引规约 (三) SQL语句 (四) ORM映射 六.工程结构 七.设计规 ...
- Java秒杀简单设计二:数据库表和Dao层设计
Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表 https://www.cnblogs.com/taiguyiba/p/9791431.html ...
- 20155235 《Java程序设计》 实验二 实验三 敏捷开发与XP实践
20155235 <Java程序设计> 实验二 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验内容 没有Linux基础的同学建议先学习<Linux基础入 ...
- 最重要的 Java EE 最佳实践
參考:IBM WebSphere 开发人员技术期刊: 最重要的 Java EE 最佳实践 IBM WebSphere 开发人员技术期刊: 最重要的 Java EE 最佳实践 2004 年 IBM® W ...
- Java 理论与实践: 处理 InterruptedException
捕捉到它,然后怎么处理它? 很多 Java™ 语言方法,例如 Thread.sleep() 和 Object.wait(),都可以抛出InterruptedException.您不能忽略这个异常,因为 ...
- java servlet+mysql全过程(原创)
前段时间写过一篇 servlet+oracle的文章,但是那是因为公司有可能接那么一个项目,然后我当时也比较闲,所以随便学了下,那玩意是白去研究了,因为公司后面并没接到那项目. 这次学servlet用 ...
- java servlet+oracle 新手可看
最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口 ...
- Servlet基础(二) Servlet的生命周期
Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...
- Java Servlet系列之Servlet生命周期
Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...
随机推荐
- Office 针式打印机如何调节边距
1 右击针式打印机,选择"打印机属性" 2 点击"打印机参数设置"选项卡,之前打印出来如果发现上下距离不合适,可以通过调节但也纸页顶距来调整 该参数值可 ...
- 优雅的在React项目中使用Redux
概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使用Redux react-redux React插件,作用:方便在 ...
- Python全栈
Python基础 Python基础01 Hello World! Python基础02 基本数据类型 Python基础03 序列 Python基础04 运算 Python基础05 缩进和选择 Pyth ...
- 12.解决CCScale9Sprite或者CCControlButton无法使用的问题。
问题: 使用CCScale9Sprite或者CCControlButton等控件的时候,会出现无法识别的情况. 解决方式: 1.include对应的头部,即#include "cocos-e ...
- linux恢复误删除文件-extundelete
经过本人測试该工具支持ext3和ext4文件系统 当发现某个分区的数据被误删除后.要做的第一件事是立马卸载被误删除文件所在的分区,或者又一次以仅仅读方式挂载此分区. 这么做的原因事实上非常eas ...
- 【Noip模拟By yxj】
1.randomDescription 给定4个参数A0,N,c,p,你需要按下式构造A1~AN: A[i]=(A[i-1]2+c)mod p 之后,你需要求出A1~AN中,第K大的数值.Input ...
- android studio 使用
java5-7适用android,java8对安卓支持不好. mac osx 需要安装jdk8, google Nexus模拟器, Intellij是JetBrains发布的. Intellij有2个 ...
- HDU5806 NanoApe Loves Sequence Ⅱ
NanoApe Loves Sequence Ⅱ Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/131072 K (Ja ...
- NOIP 2013 花匠 神仙操作
题目:https://www.luogu.org/problemnew/show/P1970 今天又学习了一个新的神仙操作: 标签是DP,想了一下,没什么心情写,默默打开题解——(狂喜!) 一位大佬( ...
- gitlab smtp设置
QQ exmail gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com ...