mybatis相关

本文详细介绍了一个基于MyBatis的图书管理系统项目构建过程,包括数据库配置、实体类定义、DAO层接口及映射文件、Service层实现、Servlet层处理、直至JSP页面展示和web.xml设置,涵盖整个MVC架构的实现细节。

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

sql要求

在这里插入图片描述

整个项目框架为:

整个工程项目从右往左依次建立,本次只基于mybatis,Spring 框架以后补充。

整个工程文件:
在这里插入图片描述

创建数据库mysql

在这里插入图片描述

mybatis-cfg.xml配置。

<?xml version="1.0" encoding="UTF-8" ?>
</mappers>

创建实体类entity。

package cn.kgc.kb07.entity;/*
*@
*@Date :
//

  • @Description
    实体User
    */

public class User {
private int user_id;
private String user_name;
private int grade;
private String phone;
private String user_type;

public int getUser_id() {
    return user_id;
}

public void setUser_id(int user_id) {
    this.user_id = user_id;
}

public String getUser_name() {
    return user_name;
}

public void setUser_name(String user_name) {
    this.user_name = user_name;
}

public int getGrade() {
    return grade;
}

public void setGrade(int grade) {
    this.grade = grade;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public String getUser_type() {
    return user_type;
}

public void setUser_type(String user_type) {
    this.user_type = user_type;
}

@Override
public String toString() {
    return "User{" +
            "user_id=" + user_id +
            ", user_name='" + user_name + '\'' +
            ", grade=" + grade +
            ", phone='" + phone + '\'' +
            ", user_type='" + user_type + '\'' +
            '}';
}

}
/实体类Book同理/

创建DAO层。

/usermapper接口/
package cn.kgc.kb07.dao.user;/*
*@Author
*@Date :
*/

import cn.kgc.kb07.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserMapper {//接口映射
public List getUserListByUserName(String userName);//#{userName}一致
public int add(User user);//user入参
}
/*/
/usermapper.xml映射文件
*/

<?xml version="1.0" encoding="UTF-8" ?>





select * from user
where user_name like CONCAT(’%’,#{user_name},’%’);


insert into user(user_name,grade,phone,user_type)
values (#{user_name},#{grade},#{phone},#{user_type})


//BookMapper和BookMapper.xml同理

创建serverce层。

/UserService/
package cn.kgc.kb07.service.user;/*
import cn.kgc.kb07.dao.user.UserMapper;
import cn.kgc.kb07.entity.User;
import cn.kgc.kb07.until.MapperConfig;
import org.apache.ibatis.session.SqlSession;

public class UserService {

    public User getUser(String name){
        MapperConfig m=new MapperConfig();
        SqlSession session=m.getSession(true);
        return (User) session.getMapper(UserMapper.class).getUserListByUserName(name);
    }
}
//BookService同理

创建servlet层。

/UserServlet/
package cn.kgc.kb07.servlet;/*
*@Author
//

  • @Description

*/

import cn.kgc.kb07.entity.Book;
import cn.kgc.kb07.entity.User;
import cn.kgc.kb07.service.book.BookService;
import cn.kgc.kb07.service.user.UserService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        String name=req.getParameter("name");
        UserService services=new UserService();
        User user=services.getUser(name);
        if(user!=null){
            if(user.getUser_type().equals("1")){
                req.getSession().setAttribute("user",user);
                resp.sendRedirect("login1.jsp");
            }else if(user.getUser_type().equals("2")){
                req.getSession().setAttribute("user",user);

                String book_name=req.getParameter("book_name");
                String type_name=req.getParameter("type_name");
                BookService service=new BookService();
                List<Book> booksList= service.queryBooks(book_name,type_name);
                req.getSession().setAttribute("book", booksList);
                resp.sendRedirect("login2.jsp");


            }else{
                req.getSession().setAttribute("msg","输入不合法,重新输入");
                resp.sendRedirect("index.jsp");
            }
        }else{
            req.getSession().setAttribute("msg","输入不合法,重新输入");
            resp.sendRedirect("index.jsp");
        }

    }
}
//BookServlet等其他类同理

创建until层。

/*
mapper配置,工厂设置,无需改动,可直接复制粘贴哦
*/package cn.kgc.kb07.until;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MapperConfig {
private static SqlSessionFactory factory;
public MapperConfig(){};
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(boolean autoCommit){
    return factory.openSession(autoCommit);//默认为true关闭,false开启事务控制,
}
public static void closeSession(SqlSession session){
    if(session!=null){
        session.close();
    }
}}

创建test文件夹。

/*
测试用的
*/
package cn.kgc.kb07.dao.user;

import cn.kgc.kb07.entity.User;
import cn.kgc.kb07.until.MapperConfig;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import org.apache.log4j.lf5.util.Resource;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

import cn.kgc.kb07.until.MapperConfig.;
import static org.junit.Assert.
;

/*
*@Author
*@Date :
*/public class UserMapperTest {
private Logger logger = Logger.getLogger(UserMapperTest.class);

@Test
public void getUserListByUserName() {
    List<User> userList = null;
    SqlSession sqlSession = null;
    String userName="罗鑫";
    sqlSession = MapperConfig.getSession(true);
    // userList = sqlSession.selectList("cn.kgc.kb07.dao.user.UserMapper.xml.getUserList");
    userList=sqlSession.getMapper(UserMapper.class).getUserListByUserName(userName);
    for (User user : userList) {
        logger.info("===========>getUserListByUserName\n用户:" + user.getUser_name()+
        "\t用户电话:"+user.getPhone());
    }
    MapperConfig.closeSession(sqlSession);
}
@Test
public void add() throws ParseException {
    logger.debug("----------------------->");
    SqlSession session=null;
    int count =0;
    session=MapperConfig.getSession(true);
    User user = new User();
    user.setUser_name("李四");
    user.setGrade(1);
    user.setPhone("18860855751");
    user.setUser_type("不知道");
    //user.date(new SimpleDateFormat("yyyy-mm-dd").parse("2000-1-1"));
    count=session.getMapper(UserMapper.class).add(user);
    logger.info("插入"+count+"条数据");
    MapperConfig.closeSession(session);
}}
//集中测试,其他层的方法都可在这创建测试类进行测试,可模仿上面

创建JSP页面显示。

/**/
<%–
Created by IntelliJ IDEA.
User: liyue
Date: 2020/6/15
Time: 22:53
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

登录首页

欢迎登录

图书名图书类型
编号书名价格库存介绍类型名
${user.book_id}${user.book_name}${user.price}${user.store}${user.des}${user.type_name}

设置web.xml

/*User的登录界面
*/

login
cn.kgc.kb07.servlet.UserServlet


login
/login.do


##------------------部分成果,先睡了,以后继续完善-----------------------
登录
在这里插入图片描述
查找在这里插入图片描述

### MyBatis 相关插件概述 MyBatis 是一款优秀的持久框架,在实际开发过程中,有许多插件可以提升工作效率并简化代码编写过程。以下是几个常用的 MyBatis 插件: #### Awesome MyBatis-Plus Awesome MyBatis-Plus 收集了一系列与 MyBatis-Plus 相关的优秀资源[^1]。该项目不仅包含了各种工具库、扩展包以及最佳实践案例,还提供了丰富的文档资料供开发者学习交流。 ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> ``` #### Lombok 插件用于 MyBatis Generator (MBG) Lombok 可以极大程度地减少 Java Bean 的样板代码量。通过集成到 MBG 中,可以在生成实体类的同时自动加入必要的 getter/setter 方法以及其他常用功能[^2]。 ```properties # application.properties 配置文件中启用 lombok 对应的支持 spring.devtools.restart.enabled=true spring.main.allow-bean-definition-overriding=true ``` #### IDEA MyBatis Plugin 此插件能够帮助 IntelliJ IDEA 用户更方便快捷地完成基于 MyBatis 技术栈项目的搭建工作,比如自动生成 Mapper XML 和对应的 Entity Class 等操作[^3]。 ```bash mvn mybatis-generator:generate -e ``` #### Comment Generator FTL Template For MBG 该模板允许用户定义如何为所生成的数据访问对象添加注释说明。这有助于提高代码可读性和维护性,并确保团队成员之间遵循统一的标准[^4]。 ```ftl ${table Remarks} public class ${className} { ... } ``` #### GraalVM Native Image Support In MyBatis Projects 对于追求极致性能的应用场景来说,采用 GraalVM 来编译成原生二进制文件不失为一种好办法。这种方式不仅可以加快应用程序启动速度,还能有效降低内存占用率[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值