首页 > 其他分享 >07-项目训练_管理员数据操作部分

07-项目训练_管理员数据操作部分

时间:2022-10-28 11:08:09浏览次数:76  
标签:username BaseAdminDao 07 训练 param state 管理员 import String


目录

​1,导入后台操作模板​

​2,创建数据库及管理员信息表​

​3,编写管理员数据与数据库的交互逻辑​

​3.1 面向接口编程,创建BaseAdminDao接口​

​3.2 编写BaseAdminDao接口实现类​

​3.3 编写service类​


完整项目在这里实时更新<( ̄︶ ̄)↗[GO!]:​​https://github.com/GoodbyeFirefly/ExpressManagementSystem​​  

1,导入后台操作模板

在web目录下创建admin文件夹,将素材模板粘贴进去

07-项目训练_管理员数据操作部分_javaweb

 

2,创建数据库及管理员信息表

07-项目训练_管理员数据操作部分_javaweb_02

以下代码为navicat工具自动生成

/*
Navicat Premium Data Transfer

Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50731
Source Host : localhost:3306
Source Schema : ems

Target Server Type : MySQL
Target Server Version : 50731
File Encoding : 65001

Date: 05/09/2021 10:46:27
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for eadmin
-- ----------------------------
DROP TABLE IF EXISTS `eadmin`;
CREATE TABLE `eadmin` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`loginip` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`logintime` datetime(0) NULL DEFAULT NULL,
`createtime` datetime(0) NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of eadmin
-- ----------------------------
INSERT INTO `eadmin` VALUES (1, 'admin', '123', NULL, NULL, '2020-06-06 09:45:09');

SET FOREIGN_KEY_CHECKS = 1;

3,编写管理员数据与数据库的交互逻辑

3.1 面向接口编程,创建BaseAdminDao接口

07-项目训练_管理员数据操作部分_javaweb_03

package com.xxy.dao;

import java.util.Date;

public interface BaseAdminDao {
/**
* 根据用户名更新登陆时间和登录ip
* @param username
* @param date
* @param ip
*/
void updateLoginTime(String username, Date date, String ip);

/**
* 判断登录是否成功
* @param username
* @param password
* @return
*/
boolean login(String username, String password);

}

3.2 编写BaseAdminDao接口实现类

07-项目训练_管理员数据操作部分_javaweb_04

实现BaseAdminDao接口

07-项目训练_管理员数据操作部分_开课吧新职课_05

package com.xxy.dao.impl;

import com.xxy.dao.BaseAdminDao;
import com.xxy.util.DruidUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

public class AdminDaoMysql implements BaseAdminDao {

private static final String SQL_UPDATE_LOGIN_TIME = "UPDATE EADMIN SET LOGINTIME=?,LOGINIP=? WHERE USERNAME=?";
private static final String SQL_LOGIN = "SELECT ID FROM EADMIN WHERE USERNAME=? AND PASSWORD=?";

/**
* 根据用户名更新登陆时间和登录ip
*
* @param username
* @param date
* @param ip
*/
@Override
public void updateLoginTime(String username, Date date, String ip) {
Connection conn = DruidUtil.getConnection();
PreparedStatement state = null;
try {
state = conn.prepareStatement(SQL_UPDATE_LOGIN_TIME);
// 这里的date是util包中的类,作为参数传递方便处理。传入时需要转换为sql包中的Date类
state.setDate(1, new java.sql.Date(date.getTime()));
state.setString(2, ip);
state.setString(3, username);
state.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DruidUtil.close(conn, state, null);// 这里不需要返回结果,所以传入null
}
}

/**
* 判断登录是否成功
*
* @param username
* @param password
* @return
*/
@Override
public boolean login(String username, String password) {
Connection conn = DruidUtil.getConnection();
PreparedStatement state = null;
ResultSet rs = null;
try {
state = conn.prepareStatement(SQL_LOGIN);
// 这里的date是util包中的类,作为参数传递方便处理。传入时需要转换为sql包中的Date类
state.setString(1, username);
state.setString(2, password);
rs = state.executeQuery();
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DruidUtil.close(conn, state, rs);
}
return false;
}
}

3.3 编写service类

为避免controller层和dao层紧耦合(这两层比较重要,若发生改动对程序影响较大),在两者中间加入service层。

07-项目训练_管理员数据操作部分_开课吧新职课_06

package com.xxy.service;

import com.xxy.dao.BaseAdminDao;
import com.xxy.dao.impl.AdminDaoMysql;

import java.util.Date;

public class AdminService {
private static BaseAdminDao dao = new AdminDaoMysql();

public static void updateLoginTimeAndIP(String username, Date date, String ip) {
dao.updateLoginTime(username, date, ip);
}

public static boolean login(String username, String password) {
return dao.login(username, password);
}

}

章节汇总在这里(づ ̄3 ̄)づ╭❤~​​@&再见萤火虫&【07-项目训练】​

对学习Java感兴趣的同学欢迎加入QQ学习交流群:1126298731

有问题欢迎提问,大家一起在学习Java的路上打怪升级!(o゜▽゜)o☆[BINGO!]

标签:username,BaseAdminDao,07,训练,param,state,管理员,import,String
From: https://blog.51cto.com/u_15849465/5803802

相关文章

  • 07-项目训练_项目搭建与工具整理
    目录​​一,项目搭建与工具整理​​​​1,引入数据库相关工具包和工具类​​​​2,编写其他工具类​​一,项目搭建与工具整理1,引入数据库相关工具包和工具类packagecom.xxy.uti......
  • 07-项目训练_编写MVC框架
    目录​​一,搭建web项目环境​​​​1,配置说明​​​​2,web项目创建过程​​​​3,将项目上传至GitHub​​​​二,编写MVC框架(建立对框架的认知)​​​​1,为什么要写这个框架?​......
  • 07-项目训练_Layer
    目录​​1,下载并引入layer组件​​​​2,一些关键方法的简单介绍​​​​3,编码演示​​完整项目在这里实时更新<( ̄︶ ̄)↗[GO!]​​https://github.com/GoodbyeFirefly/ExpressMan......
  • “蔚来杯“2022牛客暑期多校训练营3 ACFHJ
    文章目录​​A.[Ancestor]LCA+暴力查询​​​​题目分析​​​​Code​​​​C.[Concatenation]签到?​​​​题目分析​​​​Code​​​​F.[Fief]点双连通分量​​​​......
  • “蔚来杯“2022牛客暑期多校训练营2 个人题解集合
    文章目录​​D.[LinkwithGameGlitch]​​​​题目分析​​​​Code​​​​G.[LinkwithMonotonicSubsequence]构造​​​​题目分析​​​​Code​​​​H.[Taketh......
  • javascript:innerText、innerHTML、textContent的区别(chrome 107.0.5304.62)
    一,js代码:<!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scale=1"><title>innerT......
  • 比赛记录-记录正式赛和训练赛过题与排名
    2019CCPC哈尔滨过题:AEFIJKrk:28/240链接:The2019ChinaCollegiateProgrammingContestHarbinSite感觉这一场异常简单,差一点就进金区了,这还是在我们只打了四小时的......
  • 代码随想录算法训练营第二天|977、有序数组的平方|209、长度最小的子数组|59、螺旋矩
    977、有序数组的平方·双指针思想题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/前提:按非递减顺序排序的整数数组   (存在重复值)   可能......
  • [ARC070E] NarrowRectangles
    [ARC070E]NarrowRectangles首先考虑\(O(n^2)dp\),设\(dp_{i,j}\)表示前\(i\)个线段其右端点在\(j\)的最小代价,令\(len_i=R_i-L_i\)\[dp_{i,j}=|R_i-j|+Min_{k=j-len_i}......
  • 07Jmeter之CSV数据文件设置遇到的问题
    CSV数据文件设置遇到的问题与解决 问题一:点击jmeter运行,没有响应,查看结果树没返回信息解决:查看日志,文件没有该文件(实际本地只有TXT文件,没有EXCEL文件),选择存在文件即解......