怎么给公司做网站推广,浙江网站建设企业,湛江seo推广公司,wordpress前台用户中心代码Javaweb增删改查之【查】1.前端页面2.java链接数据库——集成mybatis2.1 建立层2.2 实体层entity2.3 mapper#xff08;dao层#xff09;2.4 mybatis配置文件2.5工具层util3.后台功能3.1servlet前几天跟着b站up主学javaweb登录#xff0c;突然还是觉得这几年学了c是真的挺好…
Javaweb增删改查之【查】1.前端页面2.java链接数据库——集成mybatis2.1 建立层2.2 实体层entity2.3 mapperdao层2.4 mybatis配置文件2.5工具层util3.后台功能3.1servlet前几天跟着b站up主学javaweb登录突然还是觉得这几年学了c是真的挺好的看java不仅不抵触而且觉得也不难嘛。这次的增删改查的查是我自己慢慢弄出来的我真棒一些细节比如jar包放哪里怎么建包可以看之前的博客 本篇思路参考[1] 完整代码https://github.com/wangwyForNewTime/javaWeb-FindFromMySQL 数据库与上篇用的一个不赘述了
1.前端页面
首先和前面登录不同的是查需要读取数据库所有数据并且呈现出来所以需要用到JSLT库 知识点可以参考这个但是上面给的版本很低。然后我弄了半天一直服务器报500后来查了查从这个博主这里知道tomcat10以上的用2.0.0版本以上所以从这个博主这里下到了2.0.0 然后把jar包放进lib里面
%--Created by IntelliJ IDEA.User: 大喵喵Date: 2023/2/28Time: 17:55To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %
html
headmeta charsetUTF-8title管理员/titlelink relstylesheet hrefcss/bootstrap.min.csslink relstylesheet hrefcss/index.css
/headbodydiv classmainbach1Maybe Something System /h1div classlii欢迎你管理员/divdiv classduziiform classform-inline actionindexdiv classform-group has-success has-feedbacklabel classcontrol-labelID:/labelinput classform-control stylemargin-left: 20px; nametestbutton typesubmit classbtn btn-default查nbsp;nbsp;nbsp;nbsp;询/buttonbutton typebutton classbtn btn-link返回首页/button/div/formtable classtable table-striped stylemargin-top: 50px;theadtr thID/thth密码/thth身份/thth操作/th/tr/theadtbodytrtdWen/tdtd123456/tdtd管理员/tdtda href#设置/a | a href#删除/a/td/trc:forEach vare items${list}trtd${e.username}/tdtd${e.password}/tdtd管理员/tdtda href#设置/a | a href#删除/a/td/tr/c:forEach%-- tr--%
%-- tdTe/td--%
%-- td12/td--%
%-- td普通用户/td--%
%-- tda href#设置/a | a href#删除/a/td--%
%-- /tr--%/tbody/table/div/div/body
/html
2.java链接数据库——集成mybatis
想要测试链接上了数据库所有操作可以直接看上一篇内容的3 这里的作用就是让java代码能够操作数据库。
2.1 建立层
分层思想没什么神奇的就是你要实现的功能你要愿意全写一个java文件里也行但是你把不同的类分开到独立文件里面看起来清晰明了这就是分层思想
这是最后建立各种文件的目录
2.2 实体层entity
就是建立user类
package entity;public class User {private Integer userId;private String username;private String password;public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}
}
2.3 mapperdao层
就是给java能操作MySQL牵线搭桥创建的接口 这次要获取所有的数据所以需要的命令是select * from pa数据库名 UserMapper.java
package mapper;import entity.User;import java.util.List;public interface UserMapper {public User queryUserByName(String username);public ListUser findAll();
}
UserMapper.xml
?xml version1.0 encodingUTF-8 ?
!-- 引入dtd --
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd!-- namespace就是接口的包名加类名 --
mapper namespacemapper.UserMapperselect idqueryUserByName resultTypeentity.User parameterTypeString!-- 写SQL语句 --select * from pa where username #{username}/selectselect idfindAll resultTypeentity.User parameterTypeString!-- 写SQL语句 --select * from pa/select/mapper
2.4 mybatis配置文件
没有这个就别想链接数据库 mysql.properties注意test1为数据库名字按需更换密码是MySQL的密码
driver com.mysql.cj.jdbc.Driver
url jdbc:mysql://localhost:3306/test1?useUnicodetruecharacterEncodingUTF-8
username root
password 1234
mybatis-config.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configurationproperties resourcemysql.properties/!-- 默认使用的环境 ID比如defaultdevelopment也就是说我们可以配置多套environment环境--environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLED!-- JDBC 驱动--property namedriver value${driver}/!-- url数据库的 JDBC URL地址。--property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment/environmentsmapperspackage namecom.xxxx.mapper//mappers/configuration
2.5工具层util
存放工具性函数的层这里需要一个创建会话的函数
/****/
package com.xxxx.util;import java.io.IOException;
import java.io.InputStream;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class GetSqlSession {public static SqlSession createSqlSession(){SqlSessionFactory sqlSessionFactory null;InputStream input null;SqlSession session null;try{//获取mybatis的环境配置文件String resource mybatis-config.xml;//以流的方式获取resourseinput Resources.getResourceAsStream(resource);//创建会话工厂sqlSessionFactorynew SqlSessionFactoryBuilder().build(input);//通过工厂得到SqlSessionsessionsqlSessionFactory.openSession();return session;} catch (IOException e) {e.printStackTrace();return null;}}public static void main(String[] args){System.out.println(createSqlSession());}}
可以写个函数测试一些是否能联上数据库具体看上一篇博客3.7
3.后台功能
3.1servlet
jsp想向后台传东西后台想给jsp传数值都需要servlet。如果实现的功能复杂可以把实现功能的代码放到service层里面。但是这里代码简单我就没分开直接写在servlet层了
package servlet;
import entity.User;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import service.Userservice;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import util.GetSqlSession;import java.io.IOException;
import java.util.List;WebServlet(/index)//这个/很重要
public class Userservlet extends HttpServlet {// private Userservice userService new Userservice();Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String uTestValue request.getParameter(test);System.out.println(uTestValue);SqlSession session GetSqlSession.createSqlSession();UserMapper userMapper session.getMapper(UserMapper.class);ListUser listuserMapper.findAll();System.out.println(list);request.setAttribute(list, list);request.getRequestDispatcher(index.jsp).forward(request, response);}
}