1问题定义
这个程序设计可以对用户信息,部门信息进行增删改查,而且可以通过部门来对用户信息进行增删改查。
2开发工具
Mysql数据库,eclipse。
3设计过程
3.1流程图
3.2思路
(1)JDBC的步骤:加载JDBC驱动程序 → 建立数据库连接Connection →
创建执行SQL的语句PreparedStatement→ 处理执行结果ResultSet → 释放资源。
(2)通过部门信息对用户信息进行修改时,应该将这两个表相关联。可以在用户表中定义一个部门编号与部门表进行关联。
(3)在程序运行成功后,会出现一个初始界面,可以选择登录或者退出系统。登录成功后会有用户管理以及部门管理两个选项,根据需要进行选择。
(4)dao层是和数据库打交道的,它的实现类里面封装了数据库操作的一些基本方法。在这里我们将对数据库中的数据的增删改查的方法写在这里面。service层是业务层,调用Dao层里面的方法。所以在service层中你可以在需要的时候随时调用dao层中的方法。就是说,按照自己的逻辑在需要的时候调用dao层中的方法。
3.3创建数据库
在数据库中创建user与dept两个表,表中的名称根据User与Dept类中的属性进行创建,创建完成后在user表中存储一个或多个数据,在程序运行后通过这些数据来连接数据库并且进行数据操作。
3.4连接数据库
(1)下面是jdbc.properties中的配置:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ugrowstock
jdbc.user=root
jdbc.pwd=root
上面几行代码是用来连接mysql数据库的。其中ugrowstock代表数据库的名称。这个程序的数据库是在navicat premium中创建的,先创建了一个mysql的连接,其中用户名和密码都是root,在这个连接名称下面创建了ugrowstock数据库,所以在这里user与pwd配置为root。
(2)导入DbUtils类,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。需要注意的是,在这个封装类中的一行代码:
InputStream is=Thread.currentThread().getContextClassLoader().
getResourceAsStream("com/zxy/jdbc.properties");
表示的是从装载的类路径中取得资源。com/zxy/jdbc.properties是jdbc配置文件的路径。
3.5用户管理界面及功能的实现
进入用户管理界面,会有对用户信息的增删改查以及返回上一级的功能实现。选择想要实现的功能并输入相应的数字,如下图:
在选择相应功能的时候,service层调用dao层的查询方法,在Menu类中对service层的方法进行调用,就是说分别在service层中new一个dao类的对象,在Menu类中new一个service类的对象。
3.5.1查询用户信息
(1)此时,在Menu类中会调用UserService中的showUserList()方法。
public void showUserList() throws Exception{
List list= uDao.findAll();
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\tsex\t\tage\t\troloer\t\tremark");
for (int i = 0; i < list.size(); i++) {
User user=list.get(i);
if(user!=null){
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+us er.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+ user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
}
}
注意,List
(2) 下面是UserDAOImpl中的查询所有用户信息的方法:
public List findAll()throws SQLException{
String sql="Select * from user";
Connection conn= DBUtils.getConnection();
PreparedStatement state=conn.prepareStatement(sql);
ResultSet i=state.executeQuery();
List list=new ArrayList();
while(i.next()){
User user=new User();
user.setId(i.getInt(1));
user.setUserNo(i.getString(2));
user.setUserName(i.getString(3));
user.setPwd(i.getString(4));
user.setDepartNo(i.getString(5));
user.setSex(i.getString(6));
user.setAge(i.getInt(7));
user.setRoloer(i.getString(8));
user.setRemark(i.getString(9));
list.add(user);
}
DBUtils.close(i, state, conn);
return list;
}
上述代码中的sql语句是查询user表中的所有用户信息。其中用来连接数据库的代码:Connection conn= DBUtils.getConnection();之后就是对sql语句进行预编译:PreparedStatement state=conn.prepareStatement(sql);
executeQuery(String sql):表示运行select语句,返回ResultSet结果集。
所以:ResultSet i=state.executeQuery();
创建一个只能放User类的list对象,通过ResultSet中的getString(int index)方法获得在数据库里是varchar、char等类型的数据对象,并给user赋值,最后添加到list对象中去。
在这里需要特别注意的是User user=new User()这行代码必须放在循环体之中,因为add加进去的是对象的一个引用,对象实例化放在循环外面,你每次都更新了这个引用的值,当然list里面的值都一样的。如果把User user = new User();放到循环里面,每次都生成一个新的对象,更改自身不会对其他元素有影响
在使用resultset后要依次关闭对象及连接:ResultSet → Statement → Connection。所以:DBUtils.close(i, state, conn);
executeQuery(String sql):表示运行select语句,返回ResultSet结果集。
所以:ResultSeti=state.executeQuery();
创建一个只能放User类的list对象,通过ResultSet中的getString(intindex)方法获得在数据库里是varchar、char等类型的数据对象,并给user赋值,最后添加到list对象中去。
在这里需要特别注意的是Useruser=new User()这行代码必须放在循环体之中,因为add加进去的是对象的一个引用,对象实例化放在循环外面,你每次都更新了这个引用的值,当然list里面的值都一样的。如果把User user = new User();放到循环里面,每次都生成一个新的对象,更改自身不会对其他元素有影响
在使用resultset后要依次关闭对象及连接:ResultSet → Statement → Connection。所以:DBUtils.close(i,state, conn);
3.5.2添加用户信息public void addUser(Scanner scanner) throws Exception {
User user=new User();
System.out.println("请输入要新用户的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要新用户的名字");
user.setUserName(scanner.next());
System.out.println("请输入要新用户的密码");
user.setPwd(scanner.next());
System.out.println("请输入要新用户的部门编号");
user.setDepartNo(scanner.next());
System.out.println("请输入要新用户的性别");
user.setSex(scanner.next());
System.out.println("请输入要新用户的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要新用户的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要新用户的备注");
user.setRemark(scanner.next());
int i=uDao.add(user);//将user得到的值放入数据库中。
if(i>0){System.out.println("添加成功");}
else {
System.out.println("添加失败");
}
}
(2)最后调用UserDAO中的add()方法将数据添加到user表中,add()方法的具体实现如下:
public int add(User user) throws Exception {
String sql="insert into user values(0,?,?,?,?,?,?,?,?)";
Connection conn= DBUtils.getConnection();//连接数据库
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,user.getUserNo());
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
public void insertUser(Scanner scanner) throws Exception {
System.out.println("请输入要修改的id号");
int id=scanner.nextInt();
System.out.println("您现在正在修改id为"+id+"的用户信息!\n下面请输入需要修改的内容");
User user=new User();
System.out.println("请输入要您要修改的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要您要修改的名字");
user.setUserName(scanner.next());
System.out.println("请输入要您要修改的密码");
user.setPwd(scanner.next());
System.out.println("请输入要您要修改的部门编号");
user.setDepartNo(scanner.next());
System.out.println("请输入要您要修改的性别");
user.setSex(scanner.next());
System.out.println("请输入要您要修改的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要您要修改的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要您要修改的备注");
user.setRemark(scanner.next());
int i=uDao.update(id, user);
if(i>0){System.out.println("修改成功");}
else {
System.out.println("修改失败");
}
}
public int update(int id,User user) throws Exception {
String sql="UpdateusersetuserNo=?,userName=?,pwd=?,departNo=?,sex=?,
age=?,roloer=?,remark=? where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement =conn.prepareStatement(sql);
prepareStatement.setString(1,user.getUserNo());
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
prepareStatement.setInt(9,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
创建sql语句→连接数据库→对sql语句进行预编译→赋值。注意, executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。所以在这里用int i = prepareStatement.executeUpdate();使得i获得更新的行数,如果更新的行数大于0,则更新成功。
3.5.4删除用户信息
(1)在Menu类中调用deleteUser()方法,具体的方法在UserService类中的实现如下:
public void deleteUser(Scanner scanner) throws Exception {
System.out.println("请输入要删除的id号");
int id=scanner.nextInt();
int i=uDao.delete(id);
if(i>0){System.out.println("删除成功");}
else {
System.out.println("删除失败");
}
}
(2)UserDAOImpl中的delete()方法实现如下:
public int delete(int id) throws Exception {
String sql="delete from user where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement =conn.prepareStatement(sql);
prepareStatement.setInt(1,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
public void inf() throws Exception {
List list= deptDAO.infdept();
System.out.println("查询数据如下:");
System.out.println("id\t\tDeptNo\t\tDeptname\tDeptLeader");
for (Dept dept : list) {
System.out.println(dept.getId()+"\t\t"+dept.getDeptNo()+"\t"+dept.getDeptName()+"\t\t"+dept.getDeptLeader());
}
}
public List infdept() throws Exception {
String sql="select * from dept";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement =conn.prepareStatement(sql);
ResultSet i =prepareStatement.executeQuery();
List list=new ArrayList();
while(i.next()){
Dept dept=new Dept();
dept.setId(i.getInt(1));
dept.setDeptNo(i.getString(2));
dept.setDeptName(i.getString(3));
dept.setDeptLeader(i.getString(4));
list.add(dept);
}
DBUtils.close(i,prepareStatement, conn);
return list;
}
public void infUser (Scanner scanner)throws Exception
{
System.out.println("请输入要查询员工信息的部门名称:");
String name=scanner.next();
List list= deptDAO.infdeptUser(name);
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (int i = 0; i < list.size(); i++) {
User user=list.get(i);
if(user!=null){
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
}
}
public List infdeptUser(String name) throws Exception {
String sql="select * from user where departNo=(select deptNo from dept where deptName= ?)";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,name);
ResultSet i=prepareStatement.executeQuery();
List list=new ArrayList();
while(i.next()){
User user=new User();
user.setId(i.getInt(1));
user.setUserNo(i.getString(2));
user.setUserName(i.getString(3));
user.setPwd(i.getString(4));
user.setDepartNo(i.getString(5));
user.setSex(i.getString(6));
user.setAge(i.getInt(7));
user.setRoloer(i.getString(8));
user.setRemark(i.getString(9));
list.add(user);
}
DBUtils.close(i,prepareStatement, conn);
return list;
}
public void addUser(Scanner scanner) throws Exception {
User user=new User();
System.out.println("请输入要添加新员工的部门名称");
user.setDepartNo(scanner.next());
System.out.println("您现在正在为["+user.getDepartNo()+"]添加新员工");
System.out.println("请输入要添加新员工的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要添加新员工的名字");
user.setUserName(scanner.next());
System.out.println("请输入要添加新员工的密码");
user.setPwd(scanner.next());
System.out.println("请输入要添加新员工的性别");
user.setSex(scanner.next());
System.out.println("请输入要添加新员工的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要添加新员工的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要添加新员工的备注");
user.setRemark(scanner.next());
int i=deptDAO.add(user);
if(i>0){System.out.println("添加成功");}
else {
System.out.println("添加失败");
}
}
public int add(User user) throws Exception {
String sql="insert into user values(0,?,?,?,(select deptNo from dept where deptName=?),?,?,?,?)";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,user.getUserNo());
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
public void updataUser(Scanner scanner) throws Exception {
User user=new User();
System.out.println("请输入要您要修改用户的部门名称");
user.setDepartNo(scanner.next());
DeptDAO deptDAO=new DeptDAOImpl();
List list=deptDAO.infdeptUser(user.getDepartNo());
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (User user1 : list) {
System.out.println(user1.getId()+"\t\t"+user1.getUserNo()+"\t\t"+user1.getUserName()+"\t\t"+user1.getPwd()+"\t\t"+user1.getDepartNo()+"\t"+user1.getSex()+"\t\t"+user1.getAge()+"\t\t"+user1.getRoloer()+"\t\t"+user1.getRemark());
}
System.out.println("以上是{"+user.getDepartNo()+"} 部门的所有员工信息,请输入要修改的id号");
int id=scanner.nextInt();
System.out.println("您现在正在修改id为"+id+"的用户信息!\n下面请输入需要修改的内容");
System.out.println("请输入要您要修改的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要您要修改的名字");
user.setUserName(scanner.next());
System.out.println("请输入要您要修改的密码");
user.setPwd(scanner.next());
System.out.println("请输入要您要修改的性别");
user.setSex(scanner.next());
System.out.println("请输入要您要修改的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要您要修改的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要您要修改的备注");
user.setRemark(scanner.next());
int i=deptDAO.update(id, user);
if(i>0){System.out.println("修改成功");}
else {
System.out.println("修改失败");
}
}
public int update(int id, User user) throws Exception {
String sql="Update user set userNo=?,userName=?,pwd=?,departNo=(select deptNo from dept where deptName=?),sex=?,age=?,roloer=?,remark=? where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,user.getUserNo());
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
prepareStatement.setInt(9,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
public void deleteUser(Scanner scanner) throws Exception {
System.out.println("请输入要删除用户的部门名称");
String name=scanner.next();
DeptDAO deptDAO=new DeptDAOImpl();
List list=deptDAO.infdeptUser(name);
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (User user1 : list) {
System.out.println(user1.getId()+"\t\t"+user1.getUserNo()+"\t\t"+user1.getUserName()+"\t\t"+user1.getPwd()+"\t\t"+user1.getDepartNo()+"\t"+user1.getSex()+"\t\t"+user1.getAge()+"\t\t"+user1.getRoloer()+"\t\t"+user1.getRemark());
}
System.out.println("以上是{"+name+"} 部门的所有员工信息,请输入要删除用户的id号");
int id=scanner.nextInt();
int i=deptDAO.delete(id);
if(i>0){System.out.println("删除成功");}
else {
System.out.println("删除失败");
}
}
public int delete(int id) throws Exception {
String sql="delete from user where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setInt(1,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
public void vertUser(Scanner scanner)throws Exception {
List list= deptDAO.findAll();
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (User user : list) {
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
System.out.println("请输入要调动员工的ID");
int id=scanner.nextInt();
System.out.println("你要调动ID为"+id+"的员工 现所在 ["+deptDAO.findById(id)+"] 部门,\n您现在要调动这名员工到哪个部门?");
String name=scanner.next();
int i=deptDAO.vert(name, id);
if(i>0){System.out.println("调动成功");}
else {
System.out.println("调动失败");
}
}
public int vert(String name,int id) throws Exception {
// TODO Auto-generated method stub
String sql="update user set departNo=(select deptNo from dept where deptName=?) where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,name);
prepareStatement.setInt(2,id);
int i = prepareStatement.executeUpdate();//因为executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数,所以用int。
if(i>0){
return i;
}else{return 0;}
}
4项目目录
下面分别是各个类的具体代码:
package com.zxy;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.security.PrivateKey;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import com.zxy.Menu;
public class DBUtils {
private static String DRIVER;
private static String URL;
private static String USER;
private static String PWD;
static {
try {
loadConfig();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//加载配置信息
public static void loadConfig() throws IOException{
/**
* "ClassLoader提供了两个方法用于从装载的类路径中取得资源:
public URL getResource(String name);
public InputStream getResourceAsStream(String name);
这里name是资源的类路径,它是相对与“/”根路径下的位置。
getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。
*/
Properties properties=new Properties();
InputStream is=Thread.currentThread().getContextClassLoader().getResourceAsStream("com/zxy/jdbc.properties");//线程
properties.load(is);
DRIVER=properties.getProperty("jdbc.driver");
URL=properties.getProperty("jdbc.url");
USER=properties.getProperty("jdbc.user");
PWD=properties.getProperty("jdbc.pwd");
}
//获取数据库链接
public static Connection getConnection() throws SQLException{
Connection conn=DriverManager.getConnection(URL,USER,PWD);
return conn;
}
//关闭连接
public static void close(ResultSet rs,PreparedStatement ps,Connection conn){
if (rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (ps!=null)
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// public static void main(String[] args ) throws SQLException{
//
// Connection conn=new DBUtils().getConnection();
// System.out.println(conn);
// }
}
package com.zxy;
public class Dept {
private int id;
private String deptNo ;
private String deptName;
private String deptLeader;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDeptNo() {
return deptNo;
}
public void setDeptNo(String deptNo) {
this.deptNo = deptNo;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getDeptLeader() {
return deptLeader;
}
public void setDeptLeader(String deptLeader) {
this.deptLeader = deptLeader;
}
}
package com.zxy;
import java.util.List;
public interface DeptDAO {
//查询部门信息,因为查询会给我们显示查询内容,所以直接返回查询的内容就可以,这里用List保存数据。
public List infdept()throws Exception;
//查询部门用户信息
public List infdeptUser(String name) throws Exception;
//增加部门用户信息
public int add(User user)throws Exception;
//修改部门用户信息
public int update(int id,User user)throws Exception;
//删除部门用户信息
public int delete(int id) throws Exception;
//调动员工到其他部门
public String findById(int id)throws Exception;
public List findAll()throws Exception;
public int vert(String name,int id) throws Exception;
}
package com.zxy;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.PseudoColumnUsage;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
public class DeptDAOImpl implements DeptDAO {
//查询部门信息
public List infdept() throws Exception {
// TODO Auto-generated method stub
String sql="select * from dept";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
ResultSet i =prepareStatement.executeQuery();
List list=new ArrayList();
while(i.next()){
// System.out.println("用户名:"+i.getString(3)+" 部门号:"+i.getString(5)+" 性别:"+i.getString(6)+" 年龄:"+i.getInt(7)+" 角色:"+i.getString(8)+" 备注:"+i.getString(9));
Dept dept=new Dept();
dept.setId(i.getInt(1));
dept.setDeptNo(i.getString(2));
dept.setDeptName(i.getString(3));
dept.setDeptLeader(i.getString(4));
list.add(dept);
}
DBUtils.close(i,prepareStatement, conn);//ResultSet使用后依次关闭对象及连接:ResultSet → Statement → Connection
return list;
}
//查询部门的员工信息
public List infdeptUser(String name) throws Exception {
//user中的departNo和dept中的deptNo相关联。查询部门的员工信息的时候要先知道部门名称
String sql="select * from user where departNo=(select deptNo from dept where deptName= ?)";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,name);
ResultSet i=prepareStatement.executeQuery();
List list=new ArrayList();
while(i.next()){
// System.out.println("用户名:"+i.getString(3)+" 部门号:"+i.getString(5)+" 性别:"+i.getString(6)+" 年龄:"+i.getInt(7)+" 角色:"+i.getString(8)+" 备注:"+i.getString(9));
User user=new User();
user.setId(i.getInt(1));
user.setUserNo(i.getString(2));
user.setUserName(i.getString(3));
user.setPwd(i.getString(4));
user.setDepartNo(i.getString(5));
user.setSex(i.getString(6));
user.setAge(i.getInt(7));
user.setRoloer(i.getString(8));
user.setRemark(i.getString(9));
list.add(user);
}
// List list=null;
DBUtils.close(i,prepareStatement, conn);//ResultSet使用后依次关闭对象及连接:ResultSet → Statement → Connection
return list;
}
@Override
//添加部门的员工信息
public int add(User user) throws Exception {
String sql="insert into user values(0,?,?,?,(select deptNo from dept where deptName=?),?,?,?,?)";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,user.getUserNo());//给第一个问号赋值
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
int i = prepareStatement.executeUpdate();//executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。
if(i>0){
return i;
}else{return 0;}
}
@Override
//更新部门的员工信息
public int update(int id, User user) throws Exception {
// TODO Auto-generated method stub
String sql="Update user set userNo=?,userName=?,pwd=?,departNo=(select deptNo from dept where deptName=?),sex=?,age=?,roloer=?,remark=? where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,user.getUserNo());
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
prepareStatement.setInt(9,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
@Override
//删除部门的员工信息
public int delete(int id) throws Exception {
// TODO Auto-generated method stub
String sql="delete from user where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setInt(1,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
/**
* 查询全部用户信息
*/
public List findAll() throws Exception {
String sql="select * from user";
/* QueryRunner runner=new QueryRunner();
List list = (List) runner.query(DBUtils.getConnection(), sql, new BeanListHandler(User.class));
for (User user : list) {
user.show();
}*/
Connection conn= DBUtils.getConnection();
PreparedStatement state=conn.prepareStatement(sql);
ResultSet i=state.executeQuery();//executeQuery(String sql):运行select语句,返回ResultSet结果集
List list=new ArrayList();
while(i.next()){
// System.out.println("用户名:"+i.getString(3)+" 部门号:"+i.getString(5)+" 性别:"+i.getString(6)+" 年龄:"+i.getInt(7)+" 角色:"+i.getString(8)+" 备注:"+i.getString(9));
User user=new User();
user.setId(i.getInt(1));
user.setUserNo(i.getString(2));
user.setUserName(i.getString(3));
user.setPwd(i.getString(4));
user.setDepartNo(i.getString(5));
user.setSex(i.getString(6));
user.setAge(i.getInt(7));
user.setRoloer(i.getString(8));
user.setRemark(i.getString(9));
list.add(user);
}
// List list=null;
DBUtils.close(i, state, conn);
return list;
}
@Override
public String findById(int id) throws Exception {
// 因为dept中的deptNo和user中的departNo是相关联的。
String sql="Select deptName from dept where deptNo=(select departNo from user where id=?);";
Connection conn= DBUtils.getConnection();//连接数据库
//创建向数据库发送预编译sql的prepareStatement对象。
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setInt(1, id);
ResultSet c =prepareStatement.executeQuery();//executeQuery(String sql):运行select语句,返回ResultSet结果集,
if(c.next()){
return c.getString(1);
}
return null;
}
/**
* 调动员工
*/
public int vert(String name,int id) throws Exception {
// TODO Auto-generated method stub
String sql="update user set departNo=(select deptNo from dept where deptName=?) where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,name);
prepareStatement.setInt(2,id);
int i = prepareStatement.executeUpdate();//因为executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数,所以用int。
if(i>0){
return i;
}else{return 0;}
}
}
package com.zxy;
import java.util.List;
import java.util.Scanner;
import javax.xml.ws.WebServiceException;
public class DeptService {
DeptDAO deptDAO=new DeptDAOImpl();
public void inf() throws Exception {
List list= deptDAO.infdept();
System.out.println("查询数据如下:");
System.out.println("id\t\tDeptNo\t\tDeptname\tDeptLeader");
/* for (int i = 0; i < list.size(); i++) {
User user=list.get(i);
if(user!=null){
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepterNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
}*/
for (Dept dept : list) {
System.out.println(dept.getId()+"\t\t"+dept.getDeptNo()+"\t"+dept.getDeptName()+"\t\t"+dept.getDeptLeader());
}
}
public void infUser (Scanner scanner)throws Exception
{
System.out.println("请输入要查询员工信息的部门名称:");
String name=scanner.next();
List list= deptDAO.infdeptUser(name);//调用infdeptUser方法,查询部门的员工信息。
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (int i = 0; i < list.size(); i++) {
User user=list.get(i);
if(user!=null){
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
if(user==null) {
System.out.println("输入错误");
}
}
}
public void addUser(Scanner scanner) throws Exception {
User user=new User();
System.out.println("请输入要添加新员工的部门名称");
user.setDepartNo(scanner.next());
System.out.println("您现在正在为["+user.getDepartNo()+"]添加新员工");
System.out.println("请输入要添加新员工的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要添加新员工的名字");
user.setUserName(scanner.next());
System.out.println("请输入要添加新员工的密码");
user.setPwd(scanner.next());
System.out.println("请输入要添加新员工的性别");
user.setSex(scanner.next());
System.out.println("请输入要添加新员工的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要添加新员工的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要添加新员工的备注");
user.setRemark(scanner.next());
int i=deptDAO.add(user);
if(i>0){System.out.println("添加成功");}
else {
System.out.println("添加失败");
}
}
public void updataUser(Scanner scanner) throws Exception {
User user=new User();
System.out.println("请输入要您要修改用户的部门名称");
user.setDepartNo(scanner.next());
DeptDAO deptDAO=new DeptDAOImpl();
List list=deptDAO.infdeptUser(user.getDepartNo());
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (User user1 : list) {
System.out.println(user1.getId()+"\t\t"+user1.getUserNo()+"\t\t"+user1.getUserName()+"\t\t"+user1.getPwd()+"\t\t"+user1.getDepartNo()+"\t"+user1.getSex()+"\t\t"+user1.getAge()+"\t\t"+user1.getRoloer()+"\t\t"+user1.getRemark());
}
System.out.println("以上是{"+user.getDepartNo()+"} 部门的所有员工信息,请输入要修改的id号");
int id=scanner.nextInt();
System.out.println("您现在正在修改id为"+id+"的用户信息!\n下面请输入需要修改的内容");
System.out.println("请输入要您要修改的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要您要修改的名字");
user.setUserName(scanner.next());
System.out.println("请输入要您要修改的密码");
user.setPwd(scanner.next());
System.out.println("请输入要您要修改的性别");
user.setSex(scanner.next());
System.out.println("请输入要您要修改的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要您要修改的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要您要修改的备注");
user.setRemark(scanner.next());
int i=deptDAO.update(id, user);
if(i>0){System.out.println("修改成功");}
else {
System.out.println("修改失败");
}
}
public void deleteUser(Scanner scanner) throws Exception {
System.out.println("请输入要删除用户的部门名称");
String name=scanner.next();
DeptDAO deptDAO=new DeptDAOImpl();
List list=deptDAO.infdeptUser(name);
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (User user1 : list) {
System.out.println(user1.getId()+"\t\t"+user1.getUserNo()+"\t\t"+user1.getUserName()+"\t\t"+user1.getPwd()+"\t\t"+user1.getDepartNo()+"\t"+user1.getSex()+"\t\t"+user1.getAge()+"\t\t"+user1.getRoloer()+"\t\t"+user1.getRemark());
}
System.out.println("以上是{"+name+"} 部门的所有员工信息,请输入要删除用户的id号");
int id=scanner.nextInt();
int i=deptDAO.delete(id);
if(i>0){System.out.println("删除成功");}
else {
System.out.println("删除失败");
}
}
public void vertUser(Scanner scanner)throws Exception {
List list= deptDAO.findAll();
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\t\tsex\t\tage\t\troloer\t\tremark");
for (User user : list) {
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
System.out.println("请输入要调动员工的ID");
int id=scanner.nextInt();
System.out.println("你要调动ID为"+id+"的员工 现所在 ["+deptDAO.findById(id)+"] 部门,\n您现在要调动这名员工到哪个部门?");
String name=scanner.next();
int i=deptDAO.vert(name, id);
if(i>0){System.out.println("调动成功");}
else {
System.out.println("调动失败");
}
}
}
package com.zxy;
import java.util.Scanner;
public class Menu {
private static User user;
static UserService us=new UserService();
private static Dept dept;
static DeptService ds=new DeptService();
public static void main(String[] args) throws Exception {
loginView();//在main方法中只有这一个方法,只执行这一个方法。
}
//登录视图
private static void loginView() throws Exception {
System.out.println("\t\t\t--------------欢迎来到库存管理系统------------------");
System.out.println("\t\t\t--------------1登陆-------------------------------");
System.out.println("\t\t\t--------------2退出-------------------------------");
System.out.println("请输入操作步骤;");
Scanner scanner= new Scanner(System.in);
int i=scanner.nextInt();//输入数值。
if (i==1) {//登陆
System.out.println("登录");
user=us.checkUser(scanner);//调用UserService中的方法,用来检测
//如果用户名,密码为空,则回到初始界面
if(user==null){
System.out.println("用户名或密码错误,请重新输入");
loginView();
}else {
indexView(scanner);
}
}else if (i==2) {//退出
System.out.println("本次系统退出,欢迎下次光临!");
}else {//错误
System.out.println("输入错误,请重新输入!");
loginView();
}
}
private static void indexView(Scanner scanner) throws Exception {
System.out.println("\t\t\t["+user.getUserName()+"]登录本系统");
System.out.println("\t\t\t-------------请选择要操作的目录--------------");
System.out.println("\t\t\t-------------1.基础信息管理-----------------");
System.out.println("\t\t\t---------------1.1用户管理-----------------");
System.out.println("\t\t\t---------------1.2部门管理-----------------");
System.out.println("\t\t\t-------------2返回上一级-----------------");
System.out.println("请选择您要操作的功能:");
String operate=scanner.next();//在控制台进行输入数字。
switch (operate) {
case "1.1":
//用户管理
showUserView(scanner);
break;
case "1.2"://部门管理
showDeptView(scanner);
break;
case "2":
loginView();
break;
default://任何条件都不匹配的情况下才执行
System.out.println("输入错误,请重新输入");
indexView(scanner);
break;
}
}
//用户管理界面
private static void showUserView(Scanner scanner) throws Exception {
// TODO Auto-generated method stub
System.out.println("\t\t\t-------------欢迎到用户管理界面----------------");
System.out.println("\t\t\t---------------1.查询用户信息-----------------");
System.out.println("\t\t\t---------------2.添加用户信息-----------------");
System.out.println("\t\t\t---------------3.修改用户信息-----------------");
System.out.println("\t\t\t---------------4.删除用户信息-----------------");
System.out.println("\t\t\t---------------5.返回上一级-------------------");
System.out.println("请选择您要操作的功能:");
UserDAO userDAO=new UserDAOImpl();
String operate=scanner.next();
switch (operate) {
case "1":
//查询
//user.show();
// System.out.println(user.getDepterNo());
// userDAO.findById(user.getId()).show();
// userDAO.findAll();
us.showUserList();//调用userservice中的方法
showUserView(scanner);//表示执行完这个功能后再回到showUserView这个界面。
break;
case "2":
//userDAO.insert();
us.addUser(scanner);
showUserView(scanner);
break;
case "3":
us.insertUser(scanner);
showUserView(scanner);
break;
case "4":
us.deleteUser(scanner);
showUserView(scanner);
break;
case "5":
indexView(scanner);
break;
default:
System.out.println("输入错误,请重新输入");
showUserView(scanner);
break;
}
}
private static void showDeptView(Scanner scanner) throws Exception {
// TODO Auto-generated method stub
System.out.println("\t\t\t-------------欢迎到部门管理界面-------------------");
System.out.println("\t\t\t---------------1.查询部门信息--------------------");
System.out.println("\t\t\t---------------2.查询部门员工信息-----------------");
System.out.println("\t\t\t---------------3.增加部门员工信息-----------------");
System.out.println("\t\t\t---------------4.修改部门员工信息-----------------");
System.out.println("\t\t\t---------------5.删除部门员工信息-----------------");
System.out.println("\t\t\t---------------6.调动员工到其他部门----------------");
System.out.println("\t\t\t---------------7.返回上一级----------------------");
System.out.println("请选择您要操作的功能:");
UserDAO userDAO=new UserDAOImpl();
String operate=scanner.next();
switch (operate) {
case "1":
//查询
//user.show();
// System.out.println(user.getDepterNo());
// userDAO.findById(user.getId()).show();
ds.inf();
showDeptView(scanner);
break;
case "2":
//userDAO.insert();
ds.infUser(scanner);
showDeptView(scanner);
break;
case "3":
ds.addUser(scanner);
showDeptView(scanner);
break;
case "4":
ds.updataUser(scanner);
showDeptView(scanner);
break;
case "5":
ds.deleteUser(scanner);
showDeptView(scanner);
break;
case "6":
ds.vertUser(scanner);
showDeptView(scanner);
break;
case "7":
indexView(scanner);
break;
default:
System.out.println("输入错误,请重新输入");
showDeptView(scanner);
break;
}
}
}
package com.zxy;
public class User {
private int id;
private String userNo;
private String userName;
private String pwd;
private String departNo;
private String sex;
private int age;
private String roloer;
private String remark;
public String getDepartNo() {
return departNo;
}
public void setDepartNo(String departNo) {
this.departNo = departNo;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserNo() {
return userNo;
}
public void setUserNo(String userNo) {
this.userNo = userNo;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getRoloer() {
return roloer;
}
public void setRoloer(String roloer) {
this.roloer = roloer;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public void show() {
System.out.println("用户名:"+getUserName()+" 部门号:"+getDepartNo()+" 性别:"+getSex()+" 年龄:"+getAge()+" 角色:"+getRoloer()+" 备注:"+getRemark());
}
}
package com.zxy;
import java.util.List;
import java.util.Scanner;
import javax.management.Query;
import org.omg.CORBA.UShortSeqHelper;
public interface UserDAO {
//登录
public User login(String name,String pwd)throws Exception;
public User findById(int id)throws Exception;
//全部查询
public List findAll()throws Exception;
//添加用户 自己
/*public void insert()throws Exception;*/
//添加用户 老师
public int add(User user)throws Exception;
//修改信息 自己
public int update(int id,User user)throws Exception;
//删除信息 自己
public int delete(int id) throws Exception;
}
package com.zxy;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.mysql.jdbc.Statement;
public class UserDAOImpl implements UserDAO{
/**
* 登录
*/
public User login(String name,String pwd)throws Exception {
Connection conn= DBUtils.getConnection();//连接数据库
//操作数据库
String sql="SELECT * From user WHERE username=? and pwd=?";
PreparedStatement ps = conn.prepareStatement(sql);//预编译
ps.setString(1,name);
ps.setString(2,pwd);
ResultSet i=ps.executeQuery();
User user=null;
if(i.next()){//如果下一行存在。
/*
* 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,
* 他同时还具有操纵数据的功能,可能完成对数据的更新等。
*
* ResultSet提供检索不同类型字段的方法,常用的有:
getString(int index)、getString(String columnName):获得在数据库里是varchar、char等类型的数据对象。
getFloat(int index)、getFloat(String columnName):获得在数据库里是Float类型的数据对象。
getDate(int index)、getDate(String columnName):获得在数据库里是Date类型的数据。
getBoolean(int index)、getBoolean(String columnName):获得在数据库里是Boolean类型的数据。
getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。
结果集读取数据的方法主要是getXXX(),他的参数可以是整型表示第几列(是从1开始的),还可以是列名
ResultSet还提供了对结果集进行滚动的方法:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
* */
user=new User();
user.setId(i.getInt(1));//i.getInt(1)是指得到数据库中int类型的数据对象并赋给id,在这里是获取第一列的值,也可以写成i.getInt(id).
user.setUserNo(i.getString(2));//i.getString(2)是指得到数据库中varchar类型的数据对象并赋给userNo,
user.setUserName(i.getString(3));
user.setPwd(i.getString(4));
user.setDepartNo(i.getString(5));
user.setSex(i.getString(6));
user.setAge(i.getInt(7));
user.setRoloer(i.getString(8));
user.setRemark(i.getString(9));
}
//在DBUtils中的close方法:public static void close(ResultSet rs,PreparedStatement ps,Connection conn),
DBUtils.close(null, ps, conn);
return user;
}
//通过id进行查询
public User findById(int id)throws Exception{
String sql="Select * from user where id="+id;
QueryRunner runner=new QueryRunner();
User user=runner.query(DBUtils.getConnection(), sql, new BeanHandler(User.class));
return user;
}
/* //添加用户
public void insert()throws Exception {
Connection conn= DBUtils.getConnection();
System.out.println("请输入要新用户的用户码");
Scanner nameNoinput=new Scanner(System.in);
String nameNo1=nameNoinput.next();
System.out.println("请输入要新用户的名字");
Scanner nameinput=new Scanner(System.in);
String name1=nameinput.next();
System.out.println("请输入要新用户的密码");
Scanner pwdinput=new Scanner(System.in);
String pwd1=pwdinput.next();
System.out.println("请输入要新用户的部门编号");
Scanner departNoinput=new Scanner(System.in);
String departNo1=departNoinput.next();
System.out.println("请输入要新用户的性别");
Scanner sexinput=new Scanner(System.in);
String sex1=sexinput.next();
System.out.println("请输入要新用户的年龄");
Scanner ageinput=new Scanner(System.in);
int age1=ageinput.nextInt();
System.out.println("请输入要新用户的角色");
Scanner roloerNoinput=new Scanner(System.in);
String roloer1=roloerNoinput.next();
System.out.println("请输入要新用户的备注");
Scanner remarkinput=new Scanner(System.in);
String remark1=remarkinput.next();
System.out.println("请确认您要插入的新用户信息");
System.out.println("确认信息请输入 1\n重新输入请输入 2");
Scanner scanner=new Scanner(System.in);
int i=scanner.nextInt();
if (i==1) {
String sql="insert into user values(0,?,?,?,?,?,?,?,?)";
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setString(1,nameNo1);
prepareStatement.setString(2,name1);
prepareStatement.setString(3,pwd1);
prepareStatement.setString(4,departNo1);
prepareStatement.setString(5,sex1);
prepareStatement.setInt(6,age1);
prepareStatement.setString(7,roloer1);
prepareStatement.setString(8,remark1);
int n=prepareStatement.executeUpdate();
if(n>0){System.out.println("插入成功");}
else{System.out.println("插入失败");
insert();}
}else if(i==2) {
System.out.println("请重新输入");
insert();
}else {
System.out.println("输入有误,请重新输入");
insert();
}
}*/
/**
* 全部查询
* 因为是查询数据,有很多个,所以这里用list来存储,
*/
public List findAll()throws SQLException{
String sql="Select * from user";
/* QueryRunner runner=new QueryRunner();
List list = (List) runner.query(DBUtils.getConnection(), sql, new BeanListHandler(User.class));
for (User user : list) {
user.show();
}*/
Connection conn= DBUtils.getConnection();
PreparedStatement state=conn.prepareStatement(sql);
/**
* executeQuery(String sql):运行select语句,返回ResultSet结果集。
executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。
*/
ResultSet i=state.executeQuery();//返回的是ResultSet结果集,所以这样写
List list=new ArrayList();
while(i.next()){
// System.out.println("用户名:"+i.getString(3)+" 部门号:"+i.getString(5)+" 性别:"+i.getString(6)+" 年龄:"+i.getInt(7)+" 角色:"+i.getString(8)+" 备注:"+i.getString(9));
//注意,这行代码一定要写在循环体里面,其实add加进去的是对象的一个引用,对象实例化放在循环外面,
//你每次都更新了这个引用的值,当然list里面的值都一样的。如果把User user = new User();放到循环里面,每次都生成一个新的对象,更改自身不会对其他元素有影响
User user=new User();
user.setId(i.getInt(1));
user.setUserNo(i.getString(2));
user.setUserName(i.getString(3));
user.setPwd(i.getString(4));
user.setDepartNo(i.getString(5));
user.setSex(i.getString(6));
user.setAge(i.getInt(7));
user.setRoloer(i.getString(8));
user.setRemark(i.getString(9));
list.add(user);//将这些值添加到list中。
}
// List list=null;
DBUtils.close(i, state, conn);//关闭连接,使用resultset后依次关闭对象及连接:ResultSet → Statement → Connection。
return list;
}
/*
* 添加
* @see com.zxy.UserDAO#add(com.zxy.User)
*/
@Override
public int add(User user) throws Exception {
// TODO Auto-generated method stub
String sql="insert into user values(0,?,?,?,?,?,?,?,?)";
Connection conn= DBUtils.getConnection();//连接数据库
PreparedStatement prepareStatement = conn.prepareStatement(sql);//预编译
prepareStatement.setString(1,user.getUserNo());
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
/**
* 修改
*/
public int update(int id,User user) throws Exception {
String sql="Update user set userNo=?,userName=?,pwd=?,departNo=?,sex=?,age=?,roloer=?,remark=? where id=?";
Connection conn= DBUtils.getConnection();
PreparedStatement prepareStatement = conn.prepareStatement(sql);//预编译sql语句
prepareStatement.setString(1,user.getUserNo());//赋值
prepareStatement.setString(2,user.getUserName());
prepareStatement.setString(3,user.getPwd());
prepareStatement.setString(4,user.getDepartNo());
prepareStatement.setString(5,user.getSex());
prepareStatement.setInt(6,user.getAge());
prepareStatement.setString(7,user.getRoloer());
prepareStatement.setString(8,user.getRemark());
prepareStatement.setInt(9,id);
int i = prepareStatement.executeUpdate();
if(i>0){
return i;
}else{return 0;}
}
/**
* 删除
*/
public int delete(int id) throws Exception {
// TODO Auto-generated method stub
String sql="delete from user where id=?";
Connection conn= DBUtils.getConnection();//连接数据库
PreparedStatement prepareStatement = conn.prepareStatement(sql);
prepareStatement.setInt(1,id);
/**
* executeQuery(String sql):运行select语句,返回ResultSet结果集。
executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。
*/
int i = prepareStatement.executeUpdate();//因为返回的是行数,所以用int
if(i>0){
return i;
}else{return 0;}
}
}
package com.zxy;
import java.util.List;
import java.util.Scanner;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
/**
* 数据的输入
* @author 26326
*
*/
public class UserService {
UserDAO uDao=new UserDAOImpl();
//检测输入的数据是否存在于数据库中。
public User checkUser(Scanner scanner) throws Exception {
// TODO Auto-generated method stub
User user;
System.out.println("请输入用户名");
Scanner name1=new Scanner(System.in);
String name=name1.next();//输入用户名
System.out.println("请输入密码");
Scanner pwd1=new Scanner(System.in);
String pwd=pwd1.next();//输入密码
user=uDao.login(name, pwd);
return user;
}
/*
* *查询所有用户
*/
public void showUserList() throws Exception{
List list= uDao.findAll();
System.out.println("查询数据如下:");
System.out.println("id\t\tuserNo\t\tusername\tpwd\t\tdept\tsex\t\tage\t\troloer\t\tremark");
for (int i = 0; i < list.size(); i++) {
User user=list.get(i);//list接口中的方法,根据索引取得保存的数据
if(user!=null){
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}
}
/*将list的中的数据分别给User类的对象user,*/
/* for (User user : list) {
System.out.println(user.getId()+"\t\t"+user.getUserNo()+"\t\t"+user.getUserName()+"\t\t"+user.getPwd()+"\t\t"+user.getDepartNo()+"\t"+user.getSex()+"\t\t"+user.getAge()+"\t\t"+user.getRoloer()+"\t\t"+user.getRemark());
}*/
}
//添加用户
public void addUser(Scanner scanner) throws Exception {
User user=new User();
System.out.println("请输入要新用户的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要新用户的名字");
user.setUserName(scanner.next());
System.out.println("请输入要新用户的密码");
user.setPwd(scanner.next());
System.out.println("请输入要新用户的部门编号");
user.setDepartNo(scanner.next());
System.out.println("请输入要新用户的性别");
user.setSex(scanner.next());
System.out.println("请输入要新用户的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要新用户的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要新用户的备注");
user.setRemark(scanner.next());
int i=uDao.add(user);//将user得到的值放入数据库中。
if(i>0){System.out.println("添加成功");}
else {
System.out.println("添加失败");
}
}
/**
* 修改
* @param scanner
* @throws Exception
*/
public void insertUser(Scanner scanner) throws Exception {
System.out.println("请输入要修改的id号");
int id=scanner.nextInt();//输入id
System.out.println("您现在正在修改id为"+id+"的用户信息!\n下面请输入需要修改的内容");
User user=new User();
System.out.println("请输入要您要修改的用户码");
user.setUserNo(scanner.next());
System.out.println("请输入要您要修改的名字");
user.setUserName(scanner.next());
System.out.println("请输入要您要修改的密码");
user.setPwd(scanner.next());
System.out.println("请输入要您要修改的部门编号");
user.setDepartNo(scanner.next());
System.out.println("请输入要您要修改的性别");
user.setSex(scanner.next());
System.out.println("请输入要您要修改的年龄");
user.setAge(scanner.nextInt());
System.out.println("请输入要您要修改的角色");
user.setRoloer(scanner.next());
System.out.println("请输入要您要修改的备注");
user.setRemark(scanner.next());
int i=uDao.update(id, user);
if(i>0){System.out.println("修改成功");}
else {
System.out.println("修改失败");
}
}
/**
* 删除
* @param scanner
* @throws Exception
*/
public void deleteUser(Scanner scanner) throws Exception {
System.out.println("请输入要删除的id号");
int id=scanner.nextInt();
int i=uDao.delete(id);
if(i>0){System.out.println("删除成功");}
else {
System.out.println("删除失败");
}
}
}
下面是jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ugrowstock
jdbc.user=root
jdbc.pwd=root