Mybatis+JSP+HTML创建简单的查询项目

新建项目

  1. 点击new project
  2. 选择Java Enterprise
  3. 直接点击Next

image-20201031160405448.png

4.下拉选择 Servlet

image-20201031160720974.png

5.命名和包名自定义,点击 Finish完成项目创建。

image-20201031160805327.png

构建项目架构

1.首先配置好 pom.xml文件,导入需要用到的依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>prj05</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>prj05</name>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <junit.version>5.6.2</junit.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--Java标准标签库-->
        <!--Java Standard Tag library-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.0</version>
            </plugin>
        </plugins>
    </build>
</project>

2.建好需要的文件夹架构。

image-20201031161428035

3.在 resource文件夹下创建 mybatis连接数据库文件配置 mybatis-config.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">
<!--http://mybatis.org/dtd/mybatis-3-config.dtd为红色,表示IDE工具没有联网-->
<configuration>
<!--    在此处配置的信息,是为了让mybatis创建数据库连接使用-->
    <environments default="mysql01">
        <!--        每一个environment表示一个数据库连接环境-->
        <environment id="mysql01">
            <!--事务使用JDBC的方式进行管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--使用数据库连接池的方式管理connection-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/student_db"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

<!--        <environment id="mysql02">-->
<!--            <transactionManager type=""></transactionManager>-->
<!--            <dataSource type=""></dataSource>-->
<!--        </environment>-->

    </environments>

    <!--注册和登记映射文件-->
    <mappers>
        <mapper class="com.newer.mapper.CountryMapper"/>
    </mappers>
</configuration>

4.构建数据库连接工具类

package com.newer.utils;

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 MybatisUtils {
//    Java要处理现实中的实际问题,往往会封装一些个对象来代替现实中的实体
    static SqlSessionFactory factory = null;

//    静态代码块,
    static{
    //块中的逻辑较早执行(早于构造器里面的逻辑),
    //并且整个程序运行期间,只会执行一次
    //尤其适合做一些项目的初始化工作
    //声明配置文件的路径
    String resource ="mybatis/mybatis-config.xml";
    //使用IO流读取配置文件
    InputStream in =null;
    try {
        in = Resources.getResourceAsStream(resource);
    } catch (IOException e) {
        e.printStackTrace();
    }
    //解析这个配置文件得到JDBC的要素,生成数据库对象
    //在mybatis中sqlSessionfactory就是数据库
    factory = new SqlSessionFactoryBuilder().build(in);
}

public static SqlSession openSession() throws IOException{
return factory.openSession();
}
}

5.编写实体化类。

package com.newer.bean;

import lombok.Data;

import java.util.Date;
@Data
public class Student {
    private Integer id;
    private String name;
    private Date birthday;
    private String gender;
}

6.编写查询数据库语句映射文件。

package com.newer.mapper;

import com.newer.bean.Student;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StudentMapper {
    @Select("select * from student")
    @Results(
            id = "studentMap",
            value = {
                    @Result(id = true,property = "id",column = "id"),
                    @Result(property = "name",column = "name"),
                    @Result(property = "birthday",column = "birthday"),
                    @Result(property = "gender",column = "gender"),

            }
    )
public List<Student> findAll();
}

7.编写dao方法。

package com.newer.dao;

import com.newer.bean.Student;
import com.newer.mapper.StudentMapper;
import com.newer.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;

import java.io.IOException;
import java.util.List;

public class StudentDao {
    public List<Student> findAll() throws IOException {
        SqlSession sqlSession = MybatisUtils.openSession();
        StudentMapper mapper =sqlSession.getMapper(StudentMapper.class);
        List<Student> list = mapper.findAll();
        return list;
    }
}

8.编写servlet方法。

package com.newer.servlet;

import com.newer.bean.Student;
import com.newer.dao.StudentDao;

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.util.List;
@WebServlet("/show")
public class ShowServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("你已经进入Servlet");
        //查询数据
        List<Student> list = new StudentDao().findAll();
        //把数据放到请求的作用域中
        req.setAttribute("data",list);
        //跳转到要显示数据的页面
        req.getRequestDispatcher("/show.jsp").forward(req,resp);
    }
}

9.编写前端JSP页面显示数据

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>显示所有信息</title>
    <link rel="stylesheet" href="css/bootstrap.css">
</head>

<body>
    <div class="container">
        <table class="table">
        <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>生日</th>
            <th>性别</th>
        </tr>
        </thead>
            <tbody>
<c:forEach var="student" items="${data}">
            <tr>
                <td>${student.id}</td>
                <td>${student.name}</td>
                <td>${student.birthday}</td>
                <td>${student.gender}</td>
            </tr>
</c:forEach>
            </tbody>
        </table>
    </div>
</body>
</html>

运行项目

idea使用tomcat运行项目

点击右上角的 Edit Configurations...

image-20201031170927747.png

点击左上角的 “+”下拉找到 TomEE Server,选择 Local

image-20201031171121083.png

选择所下载的Tomcat存放位置。

image-20201031171353704.png

选择右侧 “+”,选择 Artifact,下面的 Application context改为根目录(/)。点击 apply

image-20201031171452367.png

点击右上角的小绿色三角形运行Tomcat。

image-20201031171729590.png

运行效果。

image-20201031171854327.png

最后修改:2020 年 10 月 31 日 06 : 44 PM
请我喝杯奶茶吧!啾咪~