首先 我们需要两个JAR包
在这里插入图片描述
这里 我们在项目 pom.xml 文件dependencies标签下加入代码如下
导入mybatis与mysql-connector-java

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- MySQL Connector -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

在这里插入图片描述
好 这样 JAR就已经到我们项目里面了

然后 我们在java模块 下创建一个 entity 包 用来存放实体类
在这里插入图片描述
然后 我数据库中有个一staff表 数据格式如下图 我们等会就来操作这个表
在这里插入图片描述
然后 我们在entity包下创一个类 叫 staff
参考代码 如下

package com.example.dom.entity;

public class staff {
    private int id;
    private String name;
    private int age;
    private int status;
    private int departmentid;

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public void setDepartmentid(int departmentid) {
        this.departmentid = departmentid;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getStatus() {
        return status;
    }

    public int getDepartmentid() {
        return departmentid;
    }
}

这里我们根据数据库表的格式 定义了整个属性类的属性 然后声明了他们对应的get set方法

然后 我们找到 main 下的 resources 目录 右键选择创建一个文件
在这里插入图片描述叫 mybatis-config.xml
用于配置MyBatis,在该文件中配置数据库连接信息和Mapper扫描路径
参考代码如下

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="staffMapper.xml"/>
    </mappers>
</configuration>

在这里插入图片描述
这里 就告诉系统 我们要链接的数据库是 mysql
然后路径是 localhost:3306 本机默认的 test数据库
密码和用户名我都没有改过 所以都是默认的 root
扫描同目录下的 staffMapper.xml

然后 我们在项目java部分创建一个 dao层
下面创建一个接口 叫 staffDao
参考代码如下

package com.example.dom.dao;

import com.example.dom.entity.staff;

import java.util.List;

public interface staffDao {
        List<staff> getStaffList();
}

在这里插入图片描述
这里 我们定义了一个抽象方法
返回一个staff对象类型的list数组

然后 我们在resources目录下创建一个文件 叫 staffMapper.xml
其实名字是自己取的 只要能和mybatis-config.xml的配置对上就OK

参考代码如下

<?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">

<mapper namespace="com.example.dom.dao.staffDao">
    <insert id="insertStaff" parameterType="com.example.dom.entity.staff">
        INSERT INTO staff (id,name, age, department)
        VALUES (#{id}, #{name}, #{age}, #{department})
    </insert>

    <select id="getStaffList" parameterType="int" resultType="com.example.dom.entity.staff">
        SELECT * FROM staff
    </select>
</mapper>

这里 我们还要映射出所有的字段 还是挺麻烦的
然后 namespace 要对应我们dao层写的那个接口的路径
然后 select标签的 id 指向staffDao中的getStaffList函数 告诉它我们是哪个函数执行这条sql
sql也在下面写了 SELECT * FROM staff 查询整张表 这段sql放到数据库中 都是可以执行的
查询整个表 带有所有字段
parameterType 和 resultType都要指向我们staff的实体类 不然他不知道怎么操作

然后 我的WebServlet 参考代码如下

package com.example.dom;

import com.example.dom.dao.staffDao;
import com.example.dom.entity.staff;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.List;

@WebServlet("/1cginServlet")
public class TransmissionTest extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置客户端编码
        request.setCharacterEncoding("UTF-8");
        try (InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml")) {
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();

            staffDao staffDao = sqlSession.getMapper(staffDao.class);
            List<staff> userList = staffDao.getStaffList();

            sqlSession.close();
            request.setAttribute("userList",userList);
            request.getRequestDispatcher("page.jsp").forward(request,response);
            return;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

都是一些初始化的东西 又臭又长 说实话 我真的不太喜欢这种写法 还是完全注解的舒服 不过 jsp一般也就这种 本身就是个过时技术

最后将数据库表 查询成 staff类型的list集合 我们取的代理名是 userList
然后放到 request 作用域中 键还是 userList

然后跳转向page.jsp

我们 page.jsp 编写代码如下

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%request.setCharacterEncoding("UTF-8");%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
    <table>
        <thead>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${userList}" var="user">
            <tr>
                <td>${user.name}</td>
                <td>${user.age}</td>
            </tr>
        </c:forEach>
        </tbody>
    </table>
</body>
</html>

我们就用 forEach 将域对象中的userList 便利输出一下
运行结构如下
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐