上次是进行了一个定时器任务的操作,这次进行Mybatis三剑客插件的使用。
主要任务:安装Mybatis插件
Mybatis-plugin插件
步骤如下:
①Help—Eclipse Marketplace
②在搜索框中搜Mybatis,找到如下版本的插件,点击Install
③点击confirm
④选择接受
⑤出现警告,选择OK
⑥选择Yes,重启Eclipse
OK,插件我们配置完成了
接下来我们来使用此插件
-
要查找某一个方法,在dao接口中某一个方法中 按住 Ctrl键 鼠标指到方法名称上 选择open xml 就会自动跳转
-
编辑XML文件时自动补全,自动生成resultMap 安装键盘 alt + / 会弹出提示框
①在UserDao.xml中的<mapper>
后面书写如下代码
<resultMap type="com.lf.model.User" id="userMap">
<result property="id" column="id" /><!-- colum是数据库字段的名字 propertiy是java里面的属性 -->
<result property="username" column="username" /><!-- colum是数据库字段的名字 propertiy是java里面的属性 -->
<result property="pwd" column="pwd" /><!--Mybatis plugin插件快捷键Alt+/ -->
<result property="realname" column="realname" />
<result property="grade" column="grade" />
<result property="total" column="total" />
<result property="account" column="account" />
</resultMap>
②在UserDao.xml中的第一个<select>
修改如下:
<select id="findById" parameterType="integer" resultMap="userMap">
select * from user where id = #{id}
</select>
Mybatis-PageHelper分页
中文文档:https://github.com/pagehelper/MybatisPageHelper/blob/master/wikis/zh/HowToUse.md
- 引入jar包
- 配置: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">
<configuration>
<typeAliases>
<!-- 別名,把model包下所有的类自动别名命名为首字母小写的,例如User.java 别名就是user -->
<package name="com.lf.model" />
</typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
</configuration>
- 修改controller和service的list方法
@RequestMapping("/list.do")
public String list(User user ,Model model,
@RequestParam(required=true,value="pageNum",defaultValue="1") Integer pageNum,
@RequestParam(required=true,value="pageSize",defaultValue="3") Integer pageSize
){
//如果不用RequestParam,需要手动判断参数是否为空
/***
* if(pageNum==null)
* pageNum=1;
*/
//跳转user.jsp页面,model参数是用来往前台传参数的
PageInfo<User> users = userService.list(pageNum, pageSize, user);
//也可以用返回值类型是ModelAndView:这个里面可以带返回的页面,返回的数据
model.addAttribute("pageInfo", users);
return "user";
}
对与此部分,相应的UserService.java与UserDaol.java两个也要做相应修改
UserService.java
package com.lf.service;
import java.util.List;
import com.github.pagehelper.PageInfo;
import com.lf.model.User;
public interface UserService {
public PageInfo<User> list(Integer pageNum,Integer pageSize,User user);
public void create(User user);
public void update(User user);
public void delete(Integer id);
public void updateBatch(List<Integer> list);
public User findById(Integer id);
public void updateGrade();
}
UserDao.java
package com.lf.dao;
import java.util.List;
import java.util.Map;
import com.github.pagehelper.PageInfo;
import com.lf.model.User;
public interface UserDao {
public PageInfo<User> list(Integer pageNum,Integer pageSize,User user);
public List<User> list(User user);
public void create(User user);
public void update(User user);
public void delete(Integer id);
public void updateBatch(List<Integer> list);
public User findById(Integer id);
public List<User> findByTotal(List<Map<String, Object>> gradelist);
public void updateGrade(List<User> users);
}
- 将user.jsp引入boostrap的分页插件
<script src="${ctx }/js/bootstrap-paginator.min.js"></script>
或者用jquery的分页也可以:前台参考这个 https://blog.youkuaiyun.com/qq_22860341/article/details/82893487写分页标签代码
user.jsp的完整代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 引入jstl自定义的c标签 -->
<!-- 自定义标签的一个用法,设置一个变量 格式:c:setc:if c:foreach -->
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户列表</title>
<link href="${ctx }/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="${ctx }/css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" />
<script src="${ctx }/js/jquery.min.js" type="text/javascript"></script>
<script src="${ctx }/js/bootstrap.min.js" type="text/javascript"></script>
<script src="${ctx }/js/bootstrap-paginator.min.js"></script>
<%-- <script th:src="${ctx }/js/jquery.pagination.js}"></script> --%>
<!-- 引入自己的css -->
<link href="${ctx }/css/public.css" type="text/css" rel="stylesheet" />
<script type="text/javascript">
function showAddDiv(){
$(".box").show();//显示div
//document.getElementById("divId").style.display="block";
}
function edit(id){
$.ajax({
type:"get",
url:"${ctx}/user/findById.do",
data:{"id":id},
success:function(data){
$("#id").val(data.id);
$("#username").val(data.username);
$("#pwd").val(data.pwd);
$("#realname").val(data.realname);
$(".box").show();
}
});
}
function deleteUser(id){
if(confirm("您确定要删除吗?")){
$.post("${ctx}/user/delete.do",{"id":id,"username":id},
function(data){
if(data){
alert("删除成功");
window.location.reload();
}else{
alert("删除失敗");
}
})
}
}
//保存
function create(){
alert("新增提交的数据:"+$("#saveForm").serialize());
$.post("${ctx}/user/create.do",
$("#saveForm").serialize(),function(data){//form表单参数可以直接通过这种提交
if(data){
alert("保存成功");
window.location.reload();
}else{
alert("失敗");
}
});
}
</script>
</head>
<body>
<!-- 划分区域 div -->
<div class="banner"><!-- 上面那个图片部分 -->
<div class="title">
欢迎,<span id="user">赵琦</span><a href="#">退出</a>
</div>
</div>
<!-- 下面主体部分 -->
<div id="main">
<div id="left">
<ul>
<c:forEach items="${menuList }" var="row">
<li>
<img class="icon1" src="${ctx }/${row.icon}" />
<a href="${ctx }${row.url}">${row.menu }</a>
</li>
</c:forEach>
<%-- <li>
<img class="icon1" src="${ctx }/img/icon02.png" />
<a href="#">修改密码</a>
</li> --%>
</ul>
</div>
<!-- 列表 -->
<div id="right">
<button type="button" class="btn btn-primary" "showAddDiv()">新增</button>
<table class="table table-bordered">
<thead>
<tr>
<th>id</th>
<th>用户名</th>
<th>真实姓名</th>
<th>删除</th>
<th>编辑</th>
</tr>
</thead>
<tbody>
<!-- EL表达式-翻课本 -->
<!-- List<User> row.id 这个id就是后台传来的User里面的属性名 -->
<c:forEach items="${pageInfo.list }" var="row">
<tr>
<td>${row.id }</td>
<td>${row.username }</td>
<td>${row.realname }</td>
<td><a href="#" class="btn btn-primary" "deleteUser(${row.id})">删除</a></td>
<td><a href="#" class="btn btn-primary" "edit(${row.id})">编辑</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<div style="text-align:right;">
<ul id="pageLimit"></ul>
</div>
<script>
$('#pageLimit').bootstrapPaginator({
currentPage: "${pageInfo.pageNum }",//当前的请求页面。
totalPages: "${pageInfo.pages }",//一共多少页。
// size:"small",//应该是页眉的大小。
bootstrapMajorVersion: 3,//bootstrap的版本要求。
numberOfPages:"${pageInfo.pageSize }",//一页列出多少数据。
itemTexts: function (type, page, current) {//如下的代码是将页眉显示的中文显示我们自定义的中文。
switch (type) {
case "first": return "首页";
case "prev": return "上一页";
case "next": return "下一页";
case "last": return "末页";
case "page": return page;
}
},
onPageClicked:function(event,originalEvent,type,page){//分页按钮点击事件
// var zhanghao = $("#searchrole").val(); //这是搜索时的参数,根据实际情况加或者不要
var url = '${ctx}/user/list.do?pageNum=' + page;
//如果查询条件不为空,
//url = url + '&username=' + 'zq';
window.location.href = encodeURI(url);
}
});
</script>
</div>
</div>
<div class="box">
<div id="loginDiv">
<p class="logTitle">新增</p>
<div>
<form id="saveForm">
<input type="hidden" name="id" id="id" value="0" />
<div class="formInput">
<img src="${ctx }/img/icon01.png" />
<input type="text" name="username" id="username"
placeholder="" />
</div>
<div class="formInput">
<span>密码:</span> <input type="password" name="pwd" id="pwd"
placeholder="" />
</div>
<div class="formInput">
<span>真实姓名:</span> <input type="text" name="realname"
id="realname" placeholder="" />
</div>
<div class="formInput">
<span>性别:</span> <select name="sex">
<option value="1">男</option>
<option value="2">女</option>
</select>
</div>
<div class="formInput">
<span>角色:</span> <select name="role">
<option value="1">管理员</option>
<option value="2">客户</option>
</select>
</div>
<input class="formButton" type="button" value="保存"
onClick="create()" />
</form>
</div>
</div>
</div>
</body>
</html>
Mybatis-generator代码自动生成
下载地址: https://github.com/mybatis/generator/releases
-
将mybatis-generator-core-1.3.7.zip中的jar包、 generatorConfig.xml放到项目lib中
-
在lib下面添加temp目录
-
在shop数据库新建一个名叫menu的表如下:
打开dos窗口,执行下面命令:
4. 然后再temp中就会生成如下,其中就是对menu表的实现
4. 将其复制到项目对应目录,编写controller测试
在地址栏输入http://locahost:8080/shop/user/list.do会出现下图,则说明运行正确。