实训第三天(学生信息管理系统)
1.创建一个实体类UserDaoImpl
代码如下:
package net.zxk.student.dao.impl;
import net.zxk.student.bean.User;
import net.zxk.student.dao.UserDao;
import net.zxk.student.dbutil.ConnectionManager;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
-
功能:用户数据访问接口实现类
-
作者:
-
日期:
/
public class UserDaoImpl implements UserDao {
/*-
插入用户记录
-
@param user
-
@return 插入记录数
*/
@Override
public int insert(User user) {
// 定义插入记录数
int count = 0;// 1. 获得数据库连接
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “insert into t_user (username, password, telephone, register_time)”
+ " values (?, ?, ?, ?)";
try {
// 3. 创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
// 4. 设置占位符的值
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setString(3,user.getTelephone());
pstmt.setTimestamp(4, new Timestamp(user.getRegisterTime().getTime()));
// 5. 执行SQL,返回插入记录数
count = pstmt.executeUpdate();
// 6. 关闭预备语句对象
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}// 返回插入记录数
return count;
}
/**
-
按id删除用户记录
-
@param id
-
@return 删除记录数
*/
@Override
public int deleteById(int id) {
// 定义删除记录数
int count = 0;// 1. 获取数据库连接
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “delete from t_user where id = ?”;
try {
// 3. 创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
// 4. 设置占位符的值
pstmt.setInt(1, id);
// 5. 执行SQL,返回删除记录数
count = pstmt.executeUpdate();
// 6. 关闭预备语句对象
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}// 返回删除记录数
return count;
}
/**
-
更新用户记录
-
@param user
-
@return 更新记录数
*/
@Override
public int update(User user) {
// 定义更新记录数
int count = 0;// 1. 获得数据库连接
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “update t_user set username = ?, password = ?, telephone = ?,”
+ " register_time = ? where id = ?";
try {
// 3. 创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
// 4. 设置占位符的值
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setString(3, user.getTelephone());
pstmt.setTimestamp(4, new Timestamp(user.getRegisterTime().getTime()));
pstmt.setInt(5, user.getId());
// 5. 执行SQL,返回更新记录数
count = pstmt.executeUpdate();
// 6. 关闭预备语句对象
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}// 返回更新记录数
return count;
}
/**
-
按id查询用户
-
@param id
-
@return 用户实体
*/
@Override
public User findById(int id) {
// 声明用户对象
User user = null;// 1. 获取数据库连接对象
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “select * from t_user where id = ?”;
try {
// 3. 创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
// 4. 设置占位符的值
pstmt.setInt(1, id);
// 5. 执行SQL,返回结果集
ResultSet rs = pstmt.executeQuery();
// 6. 判断结果集是否有记录
if (rs.next()) {
// 创建用户实体
user = new User();
// 利用当前记录各字段值设置用户实体属性
user.setId(rs.getInt(“id”));
user.setUsername(rs.getString(“username”));
user.setPassword(rs.getString(“password”));
user.setTelephone(rs.getString(“telephone”));
user.setRegisterTime(rs.getTimestamp(“register_time”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}// 返回用户对象
return user;
}
/**
-
查询所有用户
-
@return 用户列表
*/
@Override
public List findAll() {
// 声明用户列表
List users = new ArrayList();// 1. 获取数据库连接对象
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “select * from t_user”;
try {
// 3. 创建语句对象
Statement stmt = conn.createStatement();
// 4. 执行SQL,返回结果集
ResultSet rs = stmt.executeQuery(strSQL);
// 5. 遍历结果集
while (rs.next()) {
// 创建用户实体
User user = new User();
// 利用当前记录各字段值设置用户实体属性
user.setId(rs.getInt(“id”));
user.setUsername(rs.getString(“username”));
user.setPassword(rs.getString(“password”));
user.setTelephone(rs.getString(“telephone”));
user.setRegisterTime(rs.getTimestamp(“register_time”));
// 将实体添加到用户列表
users.add(user);
}
// 6. 关闭结果集
rs.close();
// 7. 关闭语句对象
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}// 返回用户列表
return users;
}
/**
-
用户登录
-
@param username
-
@param password
-
@return 登录用户实体
*/
@Override
public User login(String username, String password) {
// 声明用户对象
User user = null;// 1. 获取数据库连接
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “select * from t_user where username = ? and password = ?”;
try {
// 3. 创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
// 4. 设置占位符的值
pstmt.setString(1, username);
pstmt.setString(2, password);
// 5. 执行SQL,返回结果集
ResultSet rs = pstmt.executeQuery();
// 6. 判断结果集是否有记录
if (rs.next()) {
// 实例化用户
user = new User();
// 利用当前记录各字段值设置用户实体属性
user.setId(rs.getInt(“id”));
user.setUsername(rs.getString(“username”));
user.setPassword(rs.getString(“password”));
user.setTelephone(rs.getString(“telephone”));
user.setRegisterTime(rs.getTimestamp(“register_time”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}// 返回用户对象
return user;
}
}
-
2.创建一个测试类TestUserImpl
代码如下:
package net.zxk.student.test;
import net.zxk.student.bean.User;
import net.zxk.student.dao.UserDao;
import net.zxk.student.dao.impl.UserDaoImpl;
import org.junit.Test;
public class TestUserDaoImpl {
@Test
public void testFindById() {
UserDao dao = new UserDaoImpl();
User user = dao.findById(1);
System.out.println(user);
}
@Test
public void testLogin() {
UserDao dao = new UserDaoImpl();
String username, password;
username = "admin";
password = "12345";
User user = dao.login(username, password);
if (user != null) {
System.out.println("恭喜,用户名与密码正确,登录成功!");
} else {
System.out.println("遗憾,用户名或密码错误,登录失败!");
}
}
@Test
public void testDeleteById(){
UserDao dao = new UserDaoImpl();
String id="181010023";
int count =dao.deleteById(1);
if(count>0){
System.out.println("恭喜,学生记录删除成功!");
}else{
System.out.println("遗憾,学生记录删除失败!");
}
}
}
3.创建一个包 service ,在这个包下面再创建一个impl,再创建几个接口
4.代码如下
package net.zxk.student.service.impl;
import net.zxk.student.bean.College;
import net.zxk.student.dao.CollegeDao;
import net.zxk.student.dao.impl.CollegeDaoImpl;
import net.zxk.student.service.CollegeService;
public class CollegeServiceImpl implements CollegeService {
/**
* 声明学校数据访问对象
*/
private CollegeDao collegeDao = new CollegeDaoImpl();
@Override
public College findCollegeById(int id) {
return collegeDao.findById(id);
}
@Override
public int updateCollege(College college) {
return collegeDao.update(college);
}
}
5.再创建一个测试一下结果
代码如下
package net.zxk.student.test;
import net.zxk.student.bean.College;
import net.zxk.student.dao.CollegeDao;
import net.zxk.student.dao.impl.CollegeDaoImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//import org.junit.Before;
//import org.junit.Test;
/**
- 功能:测试学校数据访问接口实现类
*/
public class TestCollegeDaoImpl {
@Before
public void beforeTest(){
System.out.println(“单元测试开始了”);
}
@Test
public void testFindByID(){
CollegeDao dao=new CollegeDaoImpl();
College college=dao.findById(1);
System.out.println(college );
}
@Test
public void testUpdate(){
CollegeDao dao =new CollegeDaoImpl();
College college =dao.findById(1);
college .setPresident("王洪礼");
dao.update(college);
college =dao.findById(1);
System.out.println(college);
}
@After
public void afterTest(){
System.out.println("单元测试结束了");
}
}
6.
package net.zxk.student.service.impl;
import net.zxk.student.bean.Status;
import net.zxk.student.dao.StatusDao;
import net.zxk.student.dao.impl.StatusDaoImpl;
import net.zxk.student.service.StatusService;
public class StatusServiceImpl implements StatusService {
/**
* 声明状态数据访问对象
*/
private StatusDao statusDao = new StatusDaoImpl();
@Override
public Status findStatusById(int id) {
return statusDao.findById(id);
}
@Override
public int updateStatus(Status status) {
return statusDao.update(status);
}
}
package net.zxk.student.test;
import net.zxk.student.bean.Status;
import net.zxk.student.service.StatusService;
import net.zxk.student.service.impl.StatusServiceImpl;
import org.junit.Test;
public class TestStatusServiceImpl {
@Test
public void testFindStatusServiceImpl(){
StatusService service=new StatusServiceImpl();
Status status=service.findStatusById(1);
System.out.println(status);
}
@Test
public void testUpsate(){
StatusService service=new StatusServiceImpl();
Status status=service.findStatusById(1);
status.setAuthor(“无心剑”);
status.setTelephone(“15265628765”);
int count=service.updateStatus(status);
if(count>0){
System.out.println(“恭喜,状态记录更新成功!”);
status=service.findStatusById(1);
System.out.println(status);
}else{
System.out.println(“遗憾,记录更新失败!”);
}
}
}
7.
package net.zxk.student.service.impl;
import java.util.List;
import net.zxk.student.bean.User;
import net.zxk.student.dao.UserDao;
import net.zxk.student.dao.impl.UserDaoImpl;
import net.zxk.student.service.UserService;
/**
-
功能:用户服务接口实现类
-
作者:
-
日期:2019年6月19日
/
public class UserServiceImpl implements UserService {
/*- 声明用户数据访问对象
*/
private UserDao userDao = new UserDaoImpl();
@Override
public int addUser(User user) {
return userDao.insert(user);
}@Override
public int deleteUserById(int id) {
return userDao.deleteById(id);
}@Override
public List findAllUsers() {
return userDao.findAll();
}@Override
public User findUserById(int id) {
return userDao.findById(id);
}@Override
public User login(String username, String password) {
return userDao.login(username, password);
}@Override
public int updateUser(User user) {
return userDao.update(user);
} - 声明用户数据访问对象
}
代码如下:
package net.zxk.student.test;
import net.zxk.student.bean.College;
import net.zxk.student.bean.User;
import net.zxk.student.service.CollegeService;
import net.zxk.student.service.UserService;
import net.zxk.student.service.impl.CollegeServiceImpl;
import net.zxk.student.service.impl.UserServiceImpl;
import org.junit.Test;
public class TestUserServiceImpl {
@Test
public void testLogin(){
UserService service=new UserServiceImpl();
String username,password;
username="12345";
password="1234";
User user=service.login(username,password);
if(user !=null){
System.out.println("恭喜,用户名与密码正确,登录成功!");
}else{
System.out.println("遗憾,用户名或密码错误,登录失败!");
}
}
@Test
public void testUpdateUser(){
UserService service=new UserServiceImpl();
User user=service.findUserById(1);
// user.setRegisterTime();
user.setTelephone(“3152639”);
int count=service.updateUser(user );
if(count>0){
System.out.println(“恭喜,学校记录更新成功!”);
System.out.println(user);
}else{
System.out.println("遗憾,学校记录更新失败!");
}
}
}