
首先用generator实现三个文档 分别是实体类(domain文件夹下) xml配置和dao层文件。 resource文件夹下 注意位置事先写死了,要根据要求文档来定义位置。
package com.ylzinfo.apps.zhizhi.lsgl.domain; import java.io.Serializable; public class Lsgl_teacher implements Serializable {
/**
* null
*/
private String id; /**
* null
*/
private String name; /**
* 0 是女 1是男
*/
private String sex; /**
* null
*/
private String address; /**
* TEST_TEACHER
*/
private static final long serialVersionUID = 1L; /**
* null
* @return ID null
*/
public String getId() {
return id;
} public Lsgl_teacher() { } /**
* null
* @param id null
*/
public void setId(String id) {
this.id = id;
} /**
* null
* @return NAME null
*/
public String getName() {
return name;
} /**
* null
* @param name null
*/
public void setName(String name) {
this.name = name;
} /**
* 0 是女 1是男
* @return SEX 0 是女 1是男
*/
public String getSex() {
return sex;
} /**
* 0 是女 1是男
* @param sex 0 是女 1是男
*/
public void setSex(String sex) {
this.sex = sex;
} /**
* null
* @return ADDRESS null
*/
public String getAddress() {
return address;
} /**
* null
* @param address null
*/
public void setAddress(String address) {
this.address = address;
} /**
*
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", name=").append(name);
sb.append(", sex=").append(sex);
sb.append(", address=").append(address);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
} ///////////////////////////////////////////////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.ylzinfo.apps.zhizhi.lsgl.dao.Lsgl_teacherMapper">
<resultMap id="BaseResultMap"
type="com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="SEX" jdbcType="VARCHAR" property="sex" />
<result column="ADDRESS" jdbcType="VARCHAR" property="address" />
</resultMap>
<insert id="insert" parameterType="com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher">
insert into TEST_TEACHER (ID,
NAME, SEX,
ADDRESS)
values (#{id,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR},
#{sex,jdbcType=VARCHAR},
#{address,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher">
insert into TEST_TEACHER
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="name != null">
NAME,
</if>
<if test="sex != null">
SEX,
</if>
<if test="address != null">
ADDRESS,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="sex != null">
#{sex,jdbcType=VARCHAR},
</if>
<if test="address != null">
#{address,jdbcType=VARCHAR},
</if>
</trim>
</insert> <select id="query" parameterType="com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher"
resultMap="BaseResultMap">
select ID,NAME,SEX,ADDRESS from test_teacher where 1=1
<if test="name !=null and name != ''">
AND NAME LIKE CONCAT(CONCAT('%',#{name}),'%')
</if>
<if test="sex !=null and sex != ''">
AND SEX = #{sex,jdbcType=VARCHAR}
</if>
<if test="address !=null and address != ''">
AND ADDRESS LIKE CONCAT(CONCAT('%',#{address}),'%')
</if>
order by id desc
</select> <select id="selectByPrimaryKey" parameterType="com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher"
resultMap="BaseResultMap">
select ID,NAME,SEX,ADDRESS from test_teacher where
id = #{id,jdbcType=VARCHAR}
</select> <update id="updateByPrimaryKey" parameterType="com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher">
update test_teacher
set NAME = #{name,jdbcType=VARCHAR},
SEX = #{sex,jdbcType=VARCHAR},
ADDRESS = #{address,jdbcType=VARCHAR}
where ID = #{id,jdbcType=VARCHAR}
</update>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from test_teacher
where ID = #{id,jdbcType=VARCHAR}
</delete>
</mapper> ///////////////////////////////////////////////DAO层文件
package com.ylzinfo.apps.zhizhi.lsgl.dao; import java.util.List;
import com.ylzinfo.apps.zhizhi.lsgl.domain.Lsgl_teacher;
import com.ylzinfo.eva.core.web.validate.AjaxPageResponse; public interface Lsgl_teacherMapper {
/**
* 新增数据库记录
*
* @param record
* @author Administrator
* @date 2018-07-09 14:56:34
*/
int insert(Lsgl_teacher record); /**
* 动态字段,写入数据库记录
*
* @param record
* @author Administrator
* @date 2018-07-09 14:56:34
*/
int insertSelective(Lsgl_teacher record); //改
int updateByPrimaryKey(Lsgl_teacher record); //查
List <Lsgl_teacher>query(Lsgl_teacher record,AjaxPageResponse response);//在这里进行Ajaxpageresponse的参数赋值,这个框架自动会封装resultMap //删
int deleteByPrimaryKey(String id); Lsgl_teacher selectByPrimaryKey(String id); }
service serviceimp 还有controller的编写,也是注意位置
public interface LsglService { //增
void insert(Lsgl_teacher record); //改
void updateByPrimaryKey(Lsgl_teacher record); //查
AjaxPageResponse query(Lsgl_teacher record,AjaxPageResponse response); //删
void deleteByPrimaryKey(String id); Lsgl_teacher selectById(String id); } ///////////////////////////////////////////////////////////////imp事先类
@Service//要加service
public class LsglServiceImp implements LsglService{
private static Logger logger = LoggerFactory.getLogger(LsglServiceImp.class);
@Autowired
private Lsgl_teacherMapper mapper; @Override
public void insert(Lsgl_teacher record) {
record.setId(CodeUnit.getUuid());
mapper.insertSelective(record);
} @Override
public void updateByPrimaryKey(Lsgl_teacher record) {
mapper.updateByPrimaryKey(record);
} @Override
public AjaxPageResponse query(Lsgl_teacher record, AjaxPageResponse response) {
// TODO Auto-generated method stub
mapper.query(record, response);
// System.out.println("---------------------------------------------------------------------------");
// System.out.println(response.getData().size());
//
// Lsgl_teacher a = (Lsgl_teacher)response.getData().get(0);
// System.out.println(a.getName()); return response;
} @Override
public void deleteByPrimaryKey(String id) {
mapper.deleteByPrimaryKey(id);
} @Override
public Lsgl_teacher selectById(String id) {
// TODO Auto-generated method stub
return mapper.selectByPrimaryKey(id);
} } ///////////////////////////////////////////////////////////////controller
@Controller
@RequestMapping("/zhizhi/lsgl")
public class LsglController extends BaseController{ private static final Logger logger = LoggerFactory.getLogger(LsglController.class); @Autowired
private LsglService lsglService; //@RequiresPermissions("zhizhi:lsgl:view")
@RequestMapping(value="",method=RequestMethod.GET)
public String list(Model model){
return viewName("list");//要用viewName
} @RequestMapping("/query")
@ResponseBody
public AjaxPageResponse query(Lsgl_teacher teacher,AjaxPageResponse page){//要用AjaxResponse 虽然mapper里面返回l的ist,这里他已经自动封装好了,不用管啦,因为事和griddata一起搭配使用,所以用的是AjaxPage
lsglService.query(teacher, page);
return page;
} @RequestMapping("/view/{id}")
public String viewById(@PathVariable(value="id")String id,Model model){
model.addAttribute("data", lsglService.selectById(id));
return viewName("form");//return model的时候在jsp文件里面使用${data.xxx}来获取值 就类似于一个map
} @RequestMapping("/update/{id}")
public String viewByIdU(@PathVariable(value="id")String id,Model model){
model.addAttribute("data", lsglService.selectById(id));
return viewName("form");
} @RequestMapping("/getForm")
public String getForm(){
return viewName("form");
} @RequestMapping("/add")
@ResponseBody
public AjaxResponse add(@Valid @ModelAttribute("data")Lsgl_teacher record){//ModelAttribute则是将request里面的${data}值给取出来
try{
lsglService.insert(record);
return AjaxResponse.success("添加成功");
}catch(Exception e){
logger.error("系统异常!",e);
return AjaxResponse.fail("添加失败");//因为前段是使用Ajax来,所以后端也使用Ajaxresponse
}
} @RequestMapping(value="/update",method = RequestMethod.POST)
@ResponseBody
public AjaxResponse update(@Valid @ModelAttribute("data") Lsgl_teacher record){//这里的modelAttribute里面的data是指form.jsp里面指定的DATA
try{
lsglService.updateByPrimaryKey(record);
return AjaxResponse.success("修改成功");
}catch(Exception e){
logger.error("系统异常!",e);
return AjaxResponse.fail("修改失败");
}
} @RequestMapping(value="/delete",method = RequestMethod.POST)
@ResponseBody
public AjaxResponse delete(String id){//不用实体类,用ID
try {
lsglService.deleteByPrimaryKey(id);
return AjaxResponse.success("成功");
} catch (Exception e) {
logger.error("系统异常!",e);
return AjaxResponse.fail("删除失败");
} } }
前端的jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@include file="/WEB-INF/jsp/common/taglibs.jspf"%><!-- 前面部分是框架必须,直接导入即可 -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<!-- 统一编码,不用管理 -->
<meta charset="utf-8" />
<title>教师管理</title>
<app:baseassets></app:baseassets>
<script type="text/javascript">
$(function() { // '$()'里面直接跟函数体是指在页面加载完之后执行函数
var $grid = $("#lsxx_table");
$("#querybtn").on("click", function() {
$grid.datagrid("load", $("#queryform").form("getData"));
});
$("#cancelbtn").on("click", function() {
$('#queryform').form('clear');
}); $grid.datagrid({ //easyui 的grid的用法,这里是用jquery来写入 url就是接口值 load和reload就是再加载一次
fit : true,
url : ctx + "/zhizhi/lsgl/query",
pagination : true,
multiSort : true,
lines : true,
columns : [ [ {
field : "id",
title : "ID",
align : 'left',
halign : 'center',
hidden : true
}, {
field : "name",
title : "名字",
halign : 'center',
align : 'right',
width : 80
}, {
field : "sex",
title : "性别",
halign : 'center',
align : 'center',
width : 60,
formatter : function(value, row, index) {
if (value == 1) {
return "男"
} else {
return "女"
}
}
}, {
field : "address",
title : "地址",
halign : 'center',
align : 'right',
width : 150
} ] ],
toolbar : [ {
text : "修改",
iconCls : "icon-edit",
handler : updateHandler,//利用handler的方式添加操作 }, '-', {
text : "查看",
iconCls : "icon-edit",
handler : viewHandler, }, '-', {
text : "删除",
iconCls : "icon-remove",
handler : deleteHandler, }, '-', {
text : "增加",
iconCls : "icon-add",
handler : addHandler, } ]
}); function showNoSelectWarn() {
$.messager.alert("警告提示", "请选中一行数据再进行操作!", "warning");
} function showWarn(msg) {
$.messager.alert("警告提示", msg, "warning");
} /**
* 更新操作
**/
/*
function updateHandler() {
var row = $grid.datagrid("getSelected");
if (row == null) {
showNoSelectWarn();
return false;
} $.easyui.showDialog({
title : "修改",
width : 525,
height : 150,
topMost : false,
href : ctx + "/xqgl/ndxq/update/" + row.id,
enableApplyButton : false,
saveButtonText : "保存",
onSave : function(dia) {
var validate = $("#form").form("validate");
if (validate) {
$.ajaxform({
url : ctx + "/xqgl/ndxq/update",
data : $("#form").form("getData"),
success : function(res) {
if (res.code == "0") {
$.messager.alert("成功提示", "更新成功!", "info");
$grid.datagrid("reload");
dia.dialog("close");
} else {
$.messager.alert("失败提示", "更新失败:"
+ res.message, "error");
}
}
});
}
return false;
}
}); } */ /**
* 查看操作
**/
function viewHandler() {
var row = $grid.datagrid("getSelected");
if (row == null) {
showNoSelectWarn();
return false;
} $.easyui.showDialog({
title : "查看",
width : 525,
height : 200,
topMost : false,
href : ctx + "/zhizhi/lsgl/view/" + row.id,
enableApplyButton : false,
enableSaveButton : false
}); } /**
* 更新操作
**/
function updateHandler() {
var row = $grid.datagrid("getSelected");
if (row == null) {
showNoSelectWarn();
return false;
} $.easyui.showDialog({ //EasyUI里面的showDialog,可以在href里面跟上值,然后会返回#form文件 这个时候就能用#form来获取
title : "修改",
width : 525,
height : 200,
topMost : false,
href : ctx + "/zhizhi/lsgl/update/" + row.id,
enableApplyButton : false,
saveButtonText : "保存",
onSave : function(dia) { var validate = $("#form").form("validate");
if (validate) {
$.ajaxform({//ajaxform的一个用法
url : ctx + "/zhizhi/lsgl/update",
data : $("#form").form("getData"),
success : function(res) {
if (res.code == "0") {
$.messager.alert("成功提示", "更新成功!", "info");
$grid.datagrid("reload");
dia.dialog("close");
} else {
$.messager.alert("失败提示", "更新失败:"
+ res.message, "error");
}
}
});
}
return false
}
}); } /**
* 删除操作
**/
function deleteHandler() {
var row = $grid.datagrid("getSelected");
if (row == null) {
showNoSelectWarn();
return false;
}
$.messager.confirm("提示", "确认删除?", function(r) {
if (r) {
$.ajaxform({
url : ctx + "/zhizhi/lsgl/delete",
data : {
id : row.id
},
success : function(res) {
if (res.code == "0") {
$.messager.alert("成功提示", "删除成功!", "info");
$grid.datagrid("reload");
} else {
$.messager.alert("失败提示", "删除失败:" + res.message,
"error");
}
}
});
}
});
} function addHandler() {
$.easyui.showDialog({
title : "增加",
width : 525,
height : 200,
topMost : false,
href : ctx + "/zhizhi/lsgl/getForm",
enableApplyButton : false,
saveButtonText : "确认",
onSave : function(dia) {
var validate = $("#form").form("validate");
if (validate) {
$.ajaxform({
url : ctx + "/zhizhi/lsgl/add",
data : $("#form").form("getData"),
success : function(res) {
if (res.code == "0") {
$.messager.alert("成功提示", "添加成功!", "info");
$grid.datagrid("reload");
dia.dialog("close");
} else {
$.messager.alert("失败提示", "更新失败:"
+ res.message, "error");
}
}
});
}
return false
}
});
} });
</script>
</head> <body>
<div class="easyui-layout" fit="true">
<div region="north" style="height: 35px; border-bottom: none;">
<form id="queryform">
<table style="height: 100%;">
<tr>
<td>名字:</td>
<td><input name="name" class="easyui-textbox" type="text" /></td> <td>性别:</td>
<td><input class="easyui-combobox" name="sex"
data-options="code:'SZZ_SEX'" /></td> <td>地址:</td>
<td><input class="easyui-textbox" name="address"
id="bt_user_input_postName"></td>
<td><a id="querybtn" href="javascript:void(0)"
class="easyui-linkbutton">查询</a> <a id="cancelbtn"
href="javascript:void(0)" class="easyui-linkbutton">清空</a></td><!-- 这里使用javascript:void(0)来先定义,之后用jquery来具体绑定 -->
</tr>
</table>
</form>
</div>
<div region="center">
<table id="lsxx_table"></table>
</div>
</div>
</body>
</html> ////////////////////////////////////form表单
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@include file="/WEB-INF/jsp/common/taglibs.jspf"%>
<style>
.tableTdText {
text-align: right;
/*font-weight: bold;*/
}
</style> <form id="form">
<table class="table" align="center"
style="padding-top: 20px; height: 30px;">
<input type="hidden" name="id" value="${data.id}" /> <tr>
<td class="tableTdText">名字:</td>
<td><input id="name" type="text" name="name"
value="${data.name}"></td>
</tr> <tr>
<td class="tableTdText">性别:</td>
<td><input id="sex" name="sex" class="easyui-combobox"><!-- 这里用combobox组件 下面的caode也是这个框架使用的字典 -->
value="${data.sex}" data-options="required: true,code:'SZZ_SEX'" /></td>
</tr> <tr>
<td class="tableTdText">地址:</td>
<td><input id="address" type="text" name="address"
value="${data.address}"></td>
</tr> </table> </form>
SELECT * FROM deployment WHERE name LIKE concat(concat('%',#{queryMessage}),'%') CONCAT是用来拼接字符串的 当然需要在项目系统管理里面加入我们的模块,跟上URL什么的,之后字典也在项目里面查。