首先准备数据
表结构
-- 创建表
create table user (
id primary key auto_increment comment "用户编号",
name varchar(20) not null comment "用户姓名",
password varchar(20) not null comment "用户密码"
);
表数据
-- 插入数据
insert into user values(null,"张三","123"),(null,"李四","456"),(null,"王五","123");
创建一个JavaEE项目
创建package,具体查看下图
引入jar包(7个)
准备数据源
druid.properties
# 名称不要改
url=jdbc:mysql://localhost:3306/db9?characterEncoding=utf-8
# 驱动类名称
dirverClassName=com.mysql.jdbc.Driver
# 用户名
username=root
# 密码
password=root
# 最大的链接数量,最大为20
maxActive=20
# 初始化的连接池时当中链接的数量
initialSize=10
# 连接的超时时间 3000 代表3000毫秒 ,若3秒中未连接就报错,申请连接过了多长时间若没获取到就报错
maxWait=3000
编写代码
JdbcUtils工具类
public class JdbcUtils {
// 变量的提升
private static DataSource ds;
// 读取配置文件
static {
try {
// 创建Properties集合对象去
Properties pro = new Properties();
// 将配置文件中的内容加载到properties集合中去
InputStream ios = JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties");
System.out.println(ios != null?"获取到了...." : ios);
pro.load(ios);
// 获取链接池对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取链接对象
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
// 获取链接池对象
public static DataSource getDataSource() {
return ds;
}
// 释放链接,先开启后关闭
public static void close(ResultSet rs, Statement st, Connection conn) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Statement st, Connection conn) {
close(null, st, conn);
}
}
form.jsp表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
操作user表
添加
删除
修改
实体类
User
这里没用到,但实际开发过程中是有的
public class User {
/**
* -- 创建表
* create table user (
* id primary key auto_increment comment "用户编号",
* name varchar(20) not null comment "用户姓名",
* password varchar(20) not null comment "用户密码"
* );
*/
private Integer id;
private String name;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
Servlet层
DelUserServlet类
@WebServlet("/delUserServlet")
public class DelUserServlet extends HttpServlet {
//接口: I表名Service 实现类:表名ServiceImpl 快捷键 :Alt+Enter
//servlet层调用service层
private IUserService userService = new UserServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数
String id = request.getParameter("id");
// 编写Jdbc代码
int resultLines = userService.removeUserById(id);
// 处理结果
System.out.println(resultLines > 0 ? "删除成功" : "删除失败");
}
}
AddUserServlet类
@WebServlet("/addUserServlet")
public class AddUserServlet extends HttpServlet {
// 接口: I表名Service 实现类:表名ServiceImpl 快捷键 :Alt+Enter
// servlet层调用service层
private IUserService userService = new UserServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数
// 用户名
String username = request.getParameter("name");
// 密码
String password = request.getParameter("psw");
// 调用方法
int resultLines = userService.addUser(username,password);
// 处理结果
System.out.println(resultLines > 0 ? "添加成功": "添加失败");
}
}
UpdateUserServlet类
@WebServlet("/updateUserServlet")
public class UpdateUserServlet extends HttpServlet {
//接口: I表名Service 实现类:表名ServiceImpl 快捷键 :Alt+Enter
//servlet层调用service层
private IUserService userService = new UserServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数
String id = request.getParameter("id");
String username = request.getParameter("name");
String password = request.getParameter("psw");
// 调用方法
int resultLines = userService.updateUserById(id,username,password);
// 处理结果
System.out.println(resultLines > 0 ? "修改成功" : "修改失败");
}
}
Service层
IUserService接口
public interface IUserService {
// 定义一个updateUserById方法,实现根据用户id实现修改用户
int updateUserById(String id, String username, String password);
// 定义一个addUser方法,实现添加用户
int addUser(String username, String password);
// 定义一个removeUserById方法,实现根据用户id删除用户
int removeUserById(String id);
}
UserServiceImpl实现类
/*
* 方法名命名习惯;
* service: add开头 find
* dao:insert query /select
*
* */
public class UserServiceImpl implements IUserService {
//调用dao层 ;注意包名和类名严格。 dao层接口:I表名Dao 实现类:表名DaoImpl
private IUserDao userDao = new UserDaoImpl();
@Override
public int updateUserById(String id, String username, String password) {
return userDao.updateUserById(id,username,password);
}
@Override
public int addUser(String username, String password) {
return userDao.insertUser(username,password);
}
@Override
public int removeUserById(String id) {
return userDao.delUserById(id);
}
}
Dao层
IUserDao接口
public interface IUserDao {
// 定义一个updateUserById方法,实现根据用户id实现修改用户
int updateUserById(String id, String username, String password);
// 定义一个insertUser方法,实现添加用户
int insertUser(String username, String password);
// 定义一个delUserById方法,实现根据用户id删除用户
int delUserById(String id);
}
UserDaoImpl实现类
public class UserDaoImpl implements IUserDao {
// 编写Jdbc代码
// 创建JdbcTemplate对象
private JdbcTemplate jtl = new JdbcTemplate(JdbcUtils.getDataSource());
@Override
public int updateUserById(String id, String username, String password) {
// 定义sql
String sql = "update user set username = ? , password = ? where id = ?";
// 执行sql并返回结果
return jtl.update(sql, username, password, id);
}
@Override
public int insertUser(String username, String password) {
// 定义DML语句
String sql = "insert into user(username,password) values(?,?)";
// 执行sql语句
return jtl.update(sql,username, password);
}
@Override
public int delUserById(String id) {
// 定义sql
String sql = "delete from user where id = ?";
return jtl.update(sql, id);
}
}
以上步骤都完成后,开启服务器,打开浏览器,地址栏输入"http://localhost:8080/虚拟目录/form.jsp",我这里的虚拟目录是/UserManagerSystem