mybatis實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
本文實(shí)例為大家分享了mybatis實(shí)現(xiàn)圖書(shū)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
在項(xiàng)目開(kāi)始前先將數(shù)據(jù)庫(kù)中的關(guān)系表建立,先分析需要幾個(gè)模塊表,用戶(hù),圖書(shū),類(lèi)別,租借,購(gòu)買(mǎi),簡(jiǎn)單的分成這五個(gè)。
用戶(hù)表
CREATE TABLE IF NOT EXISTS `user`( user_id INT(11) PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(20), `password` VARCHAR(20), grade INT(11), phone VARCHAR(20), user_type INT(11) );
圖書(shū)表
CREATE TABLE IF NOT EXISTS books ( book_id INT(11) PRIMARY KEY AUTO_INCREMENT, book_name VARCHAR(50), price DOUBLE(10,2), store INT(11), des VARCHAR(50), book_type INT(11) );
類(lèi)別
CREATE TABLE IF NOT EXISTS `booktype`( type_id INT(11) PRIMARY KEY AUTO_INCREMENT, type_name VARCHAR(20), default_date INT(11), delay_money_per_day DOUBLE(10,2) );
租借
CREATE TABLE IF NOT EXISTS borrow( borrow_id INT(11) PRIMARY KEY AUTO_INCREMENT, book_id INT(11), borrow_date DATE, back_date DATE, delay_money DOUBLE(10,2) );
購(gòu)買(mǎi)
CREATE TABLE IF NOT EXISTS shop( buy_id INT(11) PRIMARY KEY AUTO_INCREMENT, book_id INT(11), record_id INT(11), buy_date DATE, buy_num INT(11), total_price DOUBLE(10,2) );
在表中簡(jiǎn)單插入數(shù)據(jù)
建立工程
1、配置環(huán)境導(dǎo)入jar包

創(chuàng)建resources文件

2、建立實(shí)體類(lèi)、實(shí)現(xiàn)接口和xml文件

xml文件的格式
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace指定關(guān)聯(lián)的接口--> <mapper namespace="cn.kgc.kb07.dao.BookDao"> <!--查詢(xún)語(yǔ)句--> </mapper>
實(shí)現(xiàn)登錄功能
1、Sqlsession配置文件使用單例模式
public class MapperConfig {
private static SqlSessionFactory factory;
static{
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
try {
InputStream is= Resources.getResourceAsStream("mybatis-cfg.xml");
factory=builder.build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
return factory.openSession(true);
}
public static void closeSession(SqlSession session){
if(session!=null){
session.close();
}
}
private MapperConfig(){
}
}
2、建立登陸jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登錄頁(yè)面</title>
</head>
<body>
<%
Object msg=session.getAttribute("msg");
Object o=session.getAttribute("user");
if(msg!=null&& msg.equals("登錄成功")&&o!=null){
User u=(User)o;
%>
<h1>恭喜登錄:${user.user_name}
${user.user_type==99?"超級(jí)管理員":""}</h1>
<%
if(u.getUser_type()==99){
%>
<p><a href="userList.do" rel="external nofollow" >點(diǎn)擊展示所有用戶(hù)</a></p>
<%
}else{
%>
<p><a href="bookList.jsp" rel="external nofollow" >客戶(hù)入口</a> </p>
<%
}
} else{
%>
<form action="login.do" method="get">
<p>用戶(hù)名</p>
<P><input type="text" name="username" required></P>
<p>密碼</p>
<p><input type="text" name="password" required></p>
<p><input type="submit"></p>
</form>
<%
session.removeAttribute("msg");
}
%>
</body>
</html>
3、建立UserService,UserServlet文件
UserService實(shí)體文件
public class UserServiceImpl implements UserService{
private SqlSession session;
public UserServiceImpl(){
session= MapperConfig.getSession();
}
@Override
public User queryUser(String user_name,String password) {
User user=session.getMapper(UserDao.class).queryUserByNameAndPwd(user_name,password);
MapperConfig.closeSession(session);
return user;
}
}
UserServlet實(shí)體文件
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String user_name=req.getParameter("username");
String password=req.getParameter("password");
UserService service=new UserServiceImpl();
User user=service.queryUser(user_name,password);
System.out.println(user);
if(user!=null){
req.getSession().setAttribute("msg", "登錄成功");
req.getSession().setAttribute("user", user);
resp.sendRedirect("index.jsp");
}else{
System.out.println(2);
req.getSession().setAttribute("msg", "登錄失敗");
resp.sendRedirect("index.jsp");
}
}
}
3、配置web.xml文件
<servlet> <servlet-name>userServlet</servlet-name> <servlet-class>cn.kgc.kb07.servlet.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>userServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping>
更多學(xué)習(xí)資料請(qǐng)關(guān)注專(zhuān)題《管理系統(tǒng)開(kāi)發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java 字符串詞頻統(tǒng)計(jì)實(shí)例代碼
java 字符串詞頻統(tǒng)計(jì)實(shí)例代碼,需要的朋友可以參考一下2013-03-03
關(guān)于泛型擦除問(wèn)題的解決--Mybatis查詢(xún)類(lèi)型轉(zhuǎn)換
這篇文章主要介紹了關(guān)于泛型擦除問(wèn)題的解決--Mybatis查詢(xún)類(lèi)型轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Spring Boot開(kāi)發(fā)Web應(yīng)用詳解
這篇文章主要介紹了Spring Boot開(kāi)發(fā)Web應(yīng)用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04
MyBatis?核心組件Configuration實(shí)例詳解
Configuration用于描述 MyBatis 的主配置信息,其他組件需要獲取配置信息時(shí),直接通過(guò) Configuration 對(duì)象獲取,這篇文章主要介紹了MyBatis核心組件Configuration,需要的朋友可以參考下2023-08-08
java字節(jié)碼框架ASM操作字節(jié)碼的方法淺析
這篇文章主要給大家介紹了關(guān)于java字節(jié)碼框架ASM如何操作字節(jié)碼的相關(guān)資料,文中通過(guò)示例代碼介紹的很詳細(xì),有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
SpringBoot3集成Thymeleaf的過(guò)程詳解
在現(xiàn)代的Web開(kāi)發(fā)中,構(gòu)建靈活、動(dòng)態(tài)的用戶(hù)界面是至關(guān)重要的,Spring Boot和Thymeleaf的結(jié)合為開(kāi)發(fā)者提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)創(chuàng)建動(dòng)態(tài)的Web應(yīng)用,本文將介紹如何在Spring Boot項(xiàng)目中集成Thymeleaf,并展示一些基本的使用方法,需要的朋友可以參考下2024-01-01

