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 ...
随机推荐
- div拖拽缩放jquery插件编写——带8个控制点
项目中需要对div进行拖拽缩放,需要有控制面板8个控制点的那种,原以为这么常见的效果应该能搜索到很多相关插件,然而可以完成拖拽的实繁,却找不到我想要的,还是自己动手丰衣足食吧 效果预览(只支持pc端) ...
- MySql command line client 命令系列
—————————————————————————————————————————————————————————— 一.启动与退出 1.进入MySQL:启动MySQL Command Line Cl ...
- linux设备驱动归纳总结(八):2.match.probe.remove
linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- Thinkphp中使用PHPmailer发送邮件
在ThinkPHP\Extend\Vendor\目录下放入PHPMailer文件夹,里面包含以下文件 重置密码发送邮件 public function recover(){ if($this-> ...
- 预载入和javascript对象
请参见 http://www.west263.com/info/html/wangyezhizuo/Javascript/20080225/34168.html
- 4.7.5 Efficient Construction of LALR Parsing Tables
4.7.5 Efficient Construction of LALR Parsing Tables There are several modifications we can make to A ...
- windows 下操作目录(使用DOS命令)
Attrib 更改单个文件或目录的属性.该命令设置或删除指派给文件或目录的只读.系统.存档.隐藏以及压缩属性. 含有下列参数的 attrib 命令仅当使用故障恢复控制台时才可用.含有不同参数的 att ...
- 深入理解JMM(Java内存模型) --(二)重排序
[转载自并发编程网 – ifeve.com 原文链接:http://ifeve.com/tag/jmm/] 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存 ...
- bzoj4869
http://www.lydsy.com/JudgeOnline/problem.php?id=4869 终于A了...参考了下dalao的代码... 拓展欧几里得定理,改了几次就不变了,但是用的时候 ...
- ElasticSearch NEST
1. 什么是ElasticSearch? ElasticSearch is a powerful open source search and analytics engine that makes ...