1.查询
controller
package com.example.ks.controller;
import com.example.ks.mapper.GirlMapper;
import com.example.ks.model.Girl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
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 java.util.List;
@WebServlet("/list")
public class ListController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码 开启mybatis 这6行都是固定写法记住就可以了
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
//查询
String name = req.getParameter("name");
//接收到前端传来的name调用mapper中对应的查询方法
List<Girl> list = mapper.query(name);
//将查询结果存在req中返回给前端
req.setAttribute("list",list);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
}
mapper
package com.example.ks.mapper;
import com.example.ks.model.Girl;
import java.util.List;
/**
* 接口
* 每一个方法名称都与GirlMapper.xml中的id对应
*/
public interface GirlMapper {
/**
* 查询、搜索
* 有没有搜索内容都可以用,因为GirlMapper.xml用的是动态查询
* @param name
* @return
*/
List<Girl> query(String name);
}
xml
<?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.ks.mapper.GirlMapper">
<select id="query" resultType="com.example.ks.model.Girl">
select * from beauty
<where>
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
</where>
</select>
</mapper>
HTML
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%--引入JSTL标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--允许使用JSTL标签库--%>
<%@page isELIgnored="false" %>
<%--时间格式化工具--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<a href="add.jsp">添加</a>
<form action="list" method="post">
<%-- name要与controller中req.getParameter("name")的一样--%>
<input type="search" name="name">
<input type="submit" value="搜索">
</form>
<table border="1px" cellspacing="1">
<tr>
<td>编号</td>
<td>姓名</td>
<td>性别</td>
<td>生日</td>
<td>手机号</td>
<td>男友id</td>
<td>操作</td>
</tr>
<c:forEach items="${list}" var="item">
<tr>
<td>${item.id}</td>
<td>${item.name}</td>
<td>${item.sex}</td>
<td>
<fmt:formatDate value="${item.bornDate}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
</td>
<td>${item.phone}</td>
<td>${item.boyfriend_id}</td>
<td>
<a href="javascript:del(${item.id})">删除</a>
<a href="queryById?id=${item.id}">修改</a>
</td>
</tr>
</c:forEach>
</table>
<script>
function del(id) {
if (confirm("确定要删除吗?")) {
location.href = 'del?id=' + id
}
}
</script>
</body>
</html>
2.删除
controller
package com.example.ks.controller;
import com.example.ks.mapper.GirlMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
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;
@WebServlet("/del")
public class DelController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码 开启mybatis 这6行都是固定写法记住就可以了
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
//接收前端传过来的id
String id = req.getParameter("id");
//调用mapper中对应的删除方法
int res = mapper.del(Integer.parseInt(id));
//和添加中的判断方法一样,直接复制粘贴
if (res > 0){
//删除成功 重定向到查询界面
resp.sendRedirect("list");
}else{
//这里可以不写
resp.getWriter().println("<script>alert('删除失败');location.href='list'</script>");
}
}
}
mapper
package com.example.ks.mapper;
import com.example.ks.model.Girl;
import java.util.List;
/**
* 接口
* 每一个方法名称都与GirlMapper.xml中的id对应
*/
public interface GirlMapper {
/**
* 根据id删除对应用户
* @param id
* @return
*/
int del(Integer id);
}
xml
<?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.ks.mapper.GirlMapper">
<delete id="del">
delete from beauty where id = #{id}
</delete>
</mapper>
3.增加
controller
package com.example.ks.controller;
import com.example.ks.mapper.GirlMapper;
import com.example.ks.model.Girl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
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;
@WebServlet("/add")
public class AddController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码 开启mybatis 这6行都是固定写法记住就可以了
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
//接收前端传过来的每一个文本框的值
String name = req.getParameter("name");
System.out.println("name:"+name);
String sex = req.getParameter("sex");
System.out.println("sex:"+sex);
String phone = req.getParameter("phone");
System.out.println("phone:"+phone);
String boyFriendId = req.getParameter("boyFriendId");
System.out.println("boyFriendId:"+boyFriendId);
//把接收到的值添加到对象当中,因为id在数据库中自增所以无需传值,bornDate也不用传,在添加的sql语句中默认添加时间就是当前时间
Girl girl = new Girl(null, name, sex, null, phone, Integer.parseInt(boyFriendId));
//调用mapper中对应的添加方法
int res = mapper.add(girl);
if (res > 0){
//添加成功 重定向到查询界面
resp.sendRedirect("list");
}else{
//这里可以不写
resp.getWriter().println("<script>alert('添加失败');location.href='list'</script>");
}
}
}
mapper
package com.example.ks.mapper;
import com.example.ks.model.Girl;
import java.util.List;
/**
* 接口
* 每一个方法名称都与GirlMapper.xml中的id对应
*/
public interface GirlMapper {
/**
* 添加方法
* 因为是添加所以要传一个对象进来
* @param girl
* @return
*/
int add(Girl girl);
}
xml
<?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.ks.mapper.GirlMapper">
<insert id="add">
insert into beauty values (null,#{name},#{sex},now(),#{phone},#{boyFriendId})
</insert>
</mapper>
HTML
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="add" method="post">
<input type="text" name="name">
<input type="text" name="sex">
<input type="text" name="phone">
<input type="text" name="boyFriendId">
<input type="submit" value="添加">
</form>
</body>
</html>
4.修改
注:
1.修改的思路是携带用户id到达Acontroller,在Acontroller中根据id查询出用户的信息,返回给修改界面实现用户信息回显
2.再修改页面点击修改时,携带修改信息到达Bcontroller实现修改功能,修改成功后重定向到查询首页
Acontroller
@WebServlet("/queryById")
public class QueryListController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码 开启mybatis 这6行都是固定写法记住就可以了
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
String id = req.getParameter("id");
Girl girl = mapper.queryById(Integer.parseInt(id));
req.setAttribute("girl",girl);
req.getRequestDispatcher("/update.jsp").forward(req, resp);
}
}
Bcontroller
package com.example.ks.controller;
import com.example.ks.mapper.GirlMapper;
import com.example.ks.model.Girl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
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 java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;
@WebServlet("/update")
public class UpdateController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码 开启mybatis 这6行都是固定写法记住就可以了
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
String id = req.getParameter("id");
String name = req.getParameter("name");
String sex = req.getParameter("sex");
String bornDate = req.getParameter("bornDate");
String phone = req.getParameter("phone");
String boyfriend_id = req.getParameter("boyfriend_id");
System.out.println(bornDate);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(bornDate);
System.out.println(date.toString());
} catch (ParseException e) {
e.printStackTrace();
}
Girl girl = new Girl();
girl.setId(Integer.parseInt(id));
girl.setName(name);
girl.setSex(sex);
girl.setBornDate(date);
girl.setPhone(phone);
girl.setBoyfriend_id(Integer.parseInt(boyfriend_id));
int res = mapper.update(girl);
if (res > 0 ){
resp.sendRedirect("list");
}
}
}
mapper
package com.example.ks.mapper;
import com.example.ks.model.Girl;
import java.util.List;
/**
* 接口
* 每一个方法名称都与GirlMapper.xml中的id对应
*/
public interface GirlMapper {
Girl queryById(Integer id);
int update(Girl girl);
}
xml
<?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.ks.mapper.GirlMapper">
<update id="update">
UPDATE beauty
<set>
<if test="name != null and name != ''">
name = #{name},
</if>
<if test="sex != null and sex != ''">
sex = #{sex},
</if>
<if test="bornDate != null">
borndate = #{bornDate},
</if>
<if test="phone != null and phone != ''">
phone = #{phone},
</if>
<if test="boyfriend_id != null and boyfriend_id != ''">
boyfriend_id = #{boyfriend_id},
</if>
</set>
WHERE id = #{id}
</update>
</mapper>
HTML
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="update" method="post">
<input type="hidden" name="id" value="${girl.id}">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" value="${girl.name}"><br>
<label for="sex">性别:</label>
<input type="text" id="sex" name="sex" value="${girl.sex}"><br>
<label for="bornDate">生日:</label>
<fmt:formatDate value="${girl.bornDate}" pattern="yyyy-MM-dd" var="formattedBornDate" />
<input type="date" id="bornDate" name="bornDate" value="${formattedBornDate}"><br>
<label for="phone">手机号:</label>
<input type="text" id="phone" name="phone" value="${girl.phone}"><br>
<label for="boyfriend_id">男友ID:</label>
<input type="text" id="boyfriend_id" name="boyfriend_id" value="${girl.boyfriend_id}"><br>
<input type="submit" value="更新">
</form>
</body>
</html>