mybatis:图书管理项目

该博客详细介绍了如何使用mybatis进行图书管理项目的开发,包括连接数据库、配置mybatis环境、开发dao层,以及前端页面的配置。具体步骤涵盖数据库配置、接口与映射文件的创建、实体类定义、services层和servlet层的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis:图书管理项目

在这里插入图片描述

一、连接数据库,建立数据库及在这里插入图片描述

二、使用mybatis连接数据库,查询

1)、搭建mybatis环境

				jar包引入
						mysql-connect-java-5.x.jar
						mybatis-3.2.2.jar
						tomcat
				工具包
						junit(单元测试)4.12+hamcrest-core-1.3
						log4j
						jstl+standard
				配置tomcat

2)、mybatis配置文件

<!--xml头的配置-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC
        "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!--数据源的配置-->
    <properties resource="db.properties"></properties>
	<!--alias配置别名-->
    <typeAliases>
        <typeAlias type="cn.kgc.kb07.entity.User" alias="user"/>
        <typeAlias type="cn.kgc.kb07.entity.Book" alias="book"/>
    </typeAliases>
	<!--连接配置,环境,与数据库进行连接-->
    <environments default="dev">
        <environment id="dev">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
            	<!--这边name固定-->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${pwd}"/>
            </dataSource>
        </environment>
    </environments>
   <!--mapper映射文件配置-->
    <mappers>
        <mapper resource="cn/kgc/kb07/dao/UserMapper.xml"></mapper>
        <mapper resource="cn/kgc/kb07/dao/BookMapper.xml"></mapper>
    </mappers>
</configuration>

数据库配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.56.109:3306/library
user=kb07-9
pwd=ok

3)、开发dao层(创建接口、及映射文件、 创建实体类)

src下的目录如下:
主要相关目录
1)、创建UserMapper、BookMapper接口
例:

public interface BookMapper {
    public List<Book> query(Map map);
}

2)、配置UserMappe.xml、BookMapper.xml映射文件(为mybatis配置文件中mapper映射文件相关联)
例:

<?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">
<!--上面部分主要是将mybatis中相对应的config改为mapper-->

<!--namespace不可少,映射对应路径-->
<mapper namespace="cn.kgc.kb07.dao.BookMapper">
	<!--sql语句及动态语句编写-->
    <select id="query" resultType="book" parameterType="map">
        select a.book_id,a.book_name,a.price,a.store,a.des,b.type_name,c.buy_date,d.delay_money
        from tb_books a
        join tb_book_type b on a.book_type=b.type_id
        join tb_buy c on c.book_id=a.book_id
        join tb_borrow d on d.book_id=a.book_id
        join tb_user e on e.user_id=d.uid
        where 1=1
        <if test="bookName!=null and bookName!=''">
            and a.book_name like concat("%",#{bookName},"%")
        </if>
        <if test="username!=null and username!=''">
            and e.user_name like concat("%",#{username},"%")
        </if>
        <if test="bookType!=null and bookType!=''">
            and b.type_name=#{bookType}
        </if>
    </select>
</mapper>

3)、在entity层中编写Book类

public class Book {
    private int book_id;
    private String book_name;
    private double price;
    private int store;
    private String des;
    private String type_name;
    private Date buy_date;
    private double delay_money;
    ...
    //以下get,set方法不可省略
    //构造方法,toString方法需要则加
}

4)、在编写services层前先提取一个Mapperconfig类

public class Mapperconfig {
	//SqlSessionFactory的对象创建
    private static SqlSessionFactory factory;
    static {
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        try {
            InputStream is= Resources.getResourceAsStream("mybatis-cnf.xml");
            factory=builder.build(is);//配置文件加载
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
	//确认事务是否需要开启,非事务的情况下,请把自动提交开启
    public static SqlSession getSession(boolean autoCommit){
        return factory.openSession(autoCommit);
    }
	//私有,不给其他类调用
    private Mapperconfig(){}
}

5)、services层中编写接口及相关实现类
BookService接口

public interface BookService {
    List<Book> query(String bookName,String username,String bookType);
}

BookServiceImpl实现类

//接受前端页面传入的数据
public List<Book> query(String bookName, String username, String bookType) {
        SqlSession session= Mapperconfig.getSession(true);
        Map map =new HashMap();
        map.put("bookName",bookName);
        map.put("username",username);
        map.put("bookType",bookType);
        //通过反射方式来调用BookMapper中的方法
        List<Book> bookList=
        	session.getMapper(BookMapper.class).query(map);
        System.out.println(bookList);
        //SqlSession使用结束后就要进行关闭,防止占用资源
        session.close();
        return bookList;
    }

6)、servlet层重写方法

//与前端进行连接,获取数据,返回数据
public class BookListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码格式,防止乱码,会导致数据为空
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        //获取数据
        String bookName=req.getParameter("bookName");
        String username=req.getParameter("username");
        String bookType=req.getParameter("bookType");
//        System.out.println(bookName);
//        System.out.println(username);
//        System.out.println(bookType);
		//调用方法
        BookService service=new BookServiceImpl();
        List<Book> bookList=service.query(bookName,username,bookType);
        System.out.println(bookList);
        //进行重定向,返回数据
        req.getSession().setAttribute("bookList",bookList);
        resp.sendRedirect("bookList.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

三、 前端页面

1)、web.xml配置(中转站)

	<servlet>
        <servlet-name>bookList</servlet-name>
        <servlet-class>
        	cn.kgc.kb07.servlet.BookListServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>bookList</servlet-name>
        <url-pattern>/bookList.do</url-pattern>
    </servlet-mapping>
    <!--servlet-name取名要相同-->
    <!--servlet-class,相关servlet类的路径-->
    <!--url-pattern,页面传来路径-->

2)、编写bookList.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!--c标签引入-->

<html>
<head>
    <title>图书列表</title>
</head>
<body>
<!--建表-->
<form action="bookList.do" method="get">
    <p>
        图书名称:<input type="text" name="bookName">
        借书人姓名:<input type="text" name="username">
        图书类型:<input type="text" name="bookType">
        <input type="submit" value="查询">
        <a href="bookadd.jsp">添加订单</a>
    </p>
</form>
<table border="1">
    <tr>
        <th>图书编号</th>
        <th>书名</th>
        <th>单价</th>
        <th>库存</th>
        <th>详情</th>
        <th>类型</th>
        <th>购买时间</th>
        <th>滞纳金</th>
    </tr>
    <c:forEach items="${bookList}" var="book">
        <tr>
            <td>${book.book_id}</td>
            <td>${book.book_name}</td>
            <td>${book.price}</td>
            <td>${book.store}</td>
            <td>${book.des}</td>
            <td>${book.type_name}</td>
            <td>${book.buy_date}</td>
            <td>${book.delay_money}</td>
        </tr>
    </c:forEach>
    <%session.invalidate();%>
    <!--session使用完记得销毁-->
</table>

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值