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 ...
随机推荐
- oralce之复杂查询举例
表结构: S(SNO,SNAME) 代表 学号.学生姓名: C(CNO,CNAME,CTEACHER) 代表 课号,课程名称.授课老师 SC(SNO,CNO,SCGRADE) 代表 学号.课号.课程成 ...
- 混合式框架-AgileLite
Agile Lite是一个HTML5移动前端框架.支持jQuery和Zepto双引擎.而且提供与UI无关的独立框架,内置了Flat UI样式和Ratchet样式.同一时候也支持单页模式和多页模式开发. ...
- UVA-10163 Storage Keepers DP
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UniDAC连接Embedded MySQL server
Simple question about MySQL embedded application. Post a reply 7 posts • Page 1 of 1 Simple ques ...
- fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
project->xx Properties->Manifest->Input and Output->Embed Manifest将yes修改为no
- cc1: error: bad value (armv5) for -march= switch【转】
本文转载自:https://stackoverflow.com/questions/23871924/cc1-error-bad-value-armv5-for-march-switch Ask Qu ...
- bzoj3550: [ONTAK2010]Vacation&&bzoj3112: [Zjoi2013]防守战线
学了下单纯形法解线性规划 看起来好像并不是特别难,第二个code有注释.我还有...*=-....这个不是特别懂 第一个是正常的,第二个是解对偶问题的 #include<cstdio> # ...
- caioj1472: 后缀自动机1:多个串的LCS
子串母串跑合并答案 一个点的fail的dep是比任意一条根到这个点路径长度要小的. 那么改就可以直接来了. #include<cstdio> #include<iostream> ...
- 在linux上处理base64加密和解密
http://snailwarrior.blog.51cto.com/680306/142472/ 2.从标准输入读取文件内容,base64编码并打印到标准输出 [root@localhost tes ...
- [原创]桓泽学音频编解码(13):AC3 位分配模块算法分析
[原创]桓泽学音频编解码(1):MPEG1 MP3 系统算法分析 [原创]桓泽学音频编解码(2):AC3/Dolby Digital 系统算法分析 [原创]桓泽学音频编解码(3):AAC 系统算法分析 ...