不废话,上代码:

controller如下:

/**
* 上传附件
* @param request
* @param baseBlob
* @param response
*/
@RequestMapping(value="/uploadSeal",method=RequestMethod.POST)
@ResponseBody
public void addBaseBlob(HttpServletRequest request,Seal seal,HttpServletResponse response,@RequestParam(required=false) String sealId){
int flag=0;
try {
request.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
MultipartFile multipartFile = multipartRequest.getFile("file"); // 上传的文件名 //需要保存
String uploadFileName = multipartFile.getOriginalFilename();
// 获取文件后缀名 //需要保存
String fileType = StringUtils.substringAfterLast(uploadFileName, ".");
if("PNG".equalsIgnoreCase(fileType)||"JPEG".equalsIgnoreCase(fileType)||"JPG".equalsIgnoreCase(fileType)){
if(multipartFile!=null&&!"".equals(multipartFile.getName())){
File file = new File(request.getSession().getServletContext()
.getRealPath("WEB-INF"+File.separator+"upload"), multipartFile.getOriginalFilename());
// 判断文件夹是否存在,不存在则创建
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
String userId=request.getParameter("userId");
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
seal.setUpdateUser(((BaseUsers)request.getSession().getAttribute(WebConstants.CURRENT_USER)).getUserId());
seal.setUpdateTime(new Date());
seal.setSealImage(FileDigest.getBytesFromFile(file));
if(StringUtils.isNotBlank(sealId)){
seal.setId(sealId);
flag = sealService.update(seal);
}else{
flag=sealService.insert(seal);
} } catch (IOException e) {
e.printStackTrace();
flag=0;
}finally{
file.delete();
}
} response.setContentType("text/html;charset=utf-8;");
try {
if(flag==1)
response.getWriter().write("{success:true,msg:\""+seal.getId()+"\"}");
else
response.getWriter().write("{success:false,msg:\"上传失败!\"}");
} catch (IOException e) {
e.printStackTrace();
}finally{ try {
response.getWriter().flush();
response.getWriter().close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else{
response.setContentType("text/html;charset=utf-8;");
try {
response.getWriter().write("{success:false,msg:\"格式不正确!\"}");
response.getWriter().flush();
response.getWriter().close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

前台ext如下:

Ext.ns('Ext.seal')
Ext.seal.SealUploadWindow = Ext.extend(Ext.Window, { store : null,
/* 保存路径 */
uploadUrl : null,
//grid : null,
title : '上传印章',
constructor : function(_config) {
Ext.apply(this, _config || {});
this.myform = new Ext.FormPanel({
fileUpload : true, // 默认为图片上传
id : Ext.id(),
baseCls : 'x-plain',// 基本效果为纯色效果
bodyStyle : 'padding-top:10px;padding-left:0px;',
closealbe : true,
// 里面组件的布局方式
// layout : 'fit',
height : 400,
items : [{
labeWidth : 80,
xtype : 'textfield',
name : 'file',
inputType : 'file',
allowBlank : false,
width : 200,
fieldLabel : '上传印章'
},{
xtype : 'textfield',
name : 'sealId',
hidden : true
}]
});
this.url = {
uploadUrl : ctx+'/seal/uploadSeal'
} Ext.seal.SealUploadWindow.superclass.constructor.call(this, {
width : 350,
height : 150,
title : '上传印章',
frame : true,
// 可以关闭
closable : true,
// 关闭 按钮 销毁 窗口并销毁所以子控件。这使得Window对象和它的子控件不可 复用.
// 如果想复用Window, 设置
closeAction: 'hide' ,
//closeAction : 'close',
// 打开window页面在window页面加了个遮罩层
modal : true,
// 纯色效果
plain : true,
// 里面组件的布局方式
layout : 'fit',
items : [this.myform],
buttons : [{
text : '上传印章',
scope : this,
handler : this.uploadPhoto
}, {
text : '重置印章',
scope : this,
handler : function() {
this.myform.getForm().reset();
}
}, {
text : '关闭',
iconCls:'cancel',
scope : this,
handler : function() {
this.hide(); }
}]
}); }, // 提交表单
uploadPhoto : function() {
if (this.myform.getForm().isValid()) {
this.myform.getForm().submit({
url : this.url.uploadUrl,
method : 'post',
waitMsg : '印章上传中...',
scope : this,
success : function(form, action) {
Ext.Msg.alert('提示', '上传成功!', function() {
var sealId = action.result.msg;
this.myform.getForm().findField('sealId').setValue(sealId);
this.hide(); }, this);
},
failure : function(form, action) {
Ext.Msg.alert('提示', action.result.msg, function() {
}, this);
}
});
}
} });

formpanel:

Ext.ns('Ext.seal');
Ext.seal.SealFormPanel = new Ext.extend(Ext.form.FormPanel, {
sealId:null,
constructor : function(_config) {
if (_config == null) {
_config = {};
}
this.imgBox = new Ext.BoxComponent({
xtype : 'box',
id : 'browseImage',
name : 'photopath',
anchor : '20%',
height : 120,
width : 240,
autoEl : {
tag : 'img',
src : '',
style : 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);',
complete : 'off'
}
});
this.store = new Ext.data.Store();
this.tempID = Ext.id();
this.labeID = Ext.id(); Ext.apply(this, _config);
this.contentPanelId = Ext.id();
Ext.seal.SealFormPanel.superclass.constructor.call(this, {
labelWidth : 80,
frame : true,
border : false,
bodyStyle : 'border:0px;',
defaults : {
bodyStyle : 'border:0px;',
width : 560 },
items : [{
layout : 'column',
xtype : 'fieldset',
title : '详细信息',
items : [{
columnWidth : .5,
defaults : {
// 设置默认类型
xtype : 'textfield',
// 自动调整宽度
anchor : '90%',
disabledClass : 'txtDisabled'
},
layout : 'form',
autoHeight : true,
// 分栏中的元素
items : [{
name : 'id',
xtype : 'textfield',
hidden : true
}, {
fieldLabel : '印章名称',
xtype : 'textfield',
name : 'sealName',
allowBlank : false,
blankText : '请输入印章名称'
}, {
fieldLabel : '备注',
xtype : 'textarea',
name : 'remark'
},{
xtype:'hidden',
name:'sealId'
}]
}, {
columnWidth : .5,
defaults : {
// 设置默认类型
xtype : 'textfield',
// 自动调整宽度
anchor : '90%',
disabledClass : 'txtDisabled'
},
layout : 'form',
autoHeight : true,
style : 'margin-left:20px',
// 分栏中的元素
items : [this.imgBox,{
xtype : 'button',
text : '上传印章',
allowBlank : false,
anchor : '20%',
scope:this,
handler : this.uploadWindow
}]
}]
}],
// items : [this.imgBox,{
// xtype : 'button',
// text : '上传印章',
// allowBlank : false,
// anchor : '20%',
// scope:this,
// handler : this.uploadWindow
// },{
// name : 'id',
// xtype : 'textfield',
// hidden : true
// }, {
// fieldLabel : '印章名称',
// xtype : 'textfield',
// name : 'sealName',
// allowBlank : false,
// blankText : '请输入印章名称'
// }, {
// fieldLabel : '备注',
// xtype : 'textarea',
// name : 'remark'
// },{
// xtype:'hidden',
// name:'sealId'
// }
// ]
});
},
uploadWindow : function (){
if (this.myUploadWin == null) {
this.myUploadWin = new Ext.seal.SealUploadWindow({
}); }
this.myUploadWin.on('show', function(win) {
win.myform.getForm().reset();
if(this.sealId){
win.myform.getForm().findField('sealId').setValue(this.sealId);
}
},
this);
this.myUploadWin.show();
this.myUploadWin.on('hide', function(win) {
var sealId2 = win.myform.getForm().findField('sealId').getValue();
this.getForm().findField('sealId').setValue(sealId2);
Ext.getCmp('browseImage').getEl().dom.src=ctx+"/seal/download?sealId="+sealId2+"&thisTime="+Date.parse(new Date()); },
this);
}
})

winpanel:

Ext.ns('Ext.seal');
Ext.seal.SealWin = Ext.extend(Ext.Window, {
store : null,
saveUrl : null,
sealId:null,
constructor : function(config) {
if (config == null) {
config = {}
}
Ext.apply(this, config); this.formPanel = new Ext.seal.SealFormPanel({
sealId:this.sealId
}); Ext.seal.SealWin.superclass.constructor.call(this,
{
width : 600,
height : 280,
closeAction : 'hide',
plain : true,
modal : true,
resizable : true,
layout:'fit',
items : [this.formPanel],
buttons : [{
text : '保存',
scope : this,
handler : this.save
}, {
text : '重置',
scope : this,
handler : this.reset
}]
});
},
save : function() {
var form = this.formPanel.getForm();
var sealId = form
if (!form.isValid()) {
return;
}
// 发送请求
this.formPanel.getForm().submit({
url : this.saveUrl,
method:'post',
success : function(form,action) {
Ext.MessageBox.alert('提示',action.result.msg,function(){
this.store.reload();
this.hide();
},this);
},
scope:this
});
},
loadRecord : function(record) {
this.formPanel.getForm().loadRecord(record);
},
reset : function() {
this.formPanel.getForm().reset();
}
});

GridPanel:

Ext.ns('Ext.seal');
Ext.seal.SealGridPanel= Ext.extend(Ext.grid.GridPanel, {
actionJson : null,
pageSize : 20,
constructor : function(_config) {
Ext.apply(this, _config || {});
this.Url = {
allUrl : ctx + '/seal/queryListForPage',
insertUrl : ctx + '/seal/insert',
deleteUrl : ctx + '/seal/delete',
updateUrl : ctx + '/seal/update',
findByIdUrl:ctx + '/seal/getSeal',
isEnableOrNot:ctx + '/seal/isEnableOrNot' };
/** 顶部工具栏 */
this.actionToolBar = new Ext.Toolbar({
items:[new Ext.Action({
text : '新增',
scope:this,
handler : this.addWindow
}),'-',new Ext.Action({
text : '修改',
scope:this,
handler : this.modifyWindow
}),'-',new Ext.Action({
text : '删除',
scope:this,
handler : this.deleteWindow
}),'-',new Ext.Action({
text:'启用',
scope:this,
handler:this.isEnableTrue
}),'-',new Ext.Action({
text:'停用',
scope:this,
handler:this.isEnableFalse
})]
});
/** 顶部工具栏*/
// this.actionToolBar = new Ext.ActionToolbar({
// actionPanel : this,
// actionJson : this.actionJson,
// deleteFunction : this.deleteWindow,
// addFunction : this.addWindow,
// editFunction : this.modifyWindow
//
// });
this.store = new Ext.data.JsonStore({
baseParams : {
start : 0,
limit : this.pageSize
},
url : this.Url.allUrl,
root : 'rows', // Json中的列表数据根节点
totalProperty : 'results',
fields : ['id', 'updateUser', 'realName','sealName','remark','isEnable','sealImage',{
name : 'updateTime',
type : 'date',
dateFormat : 'time'
}]
});
/** 基本信息-选择模式 */
this.selModel = new Ext.grid.CheckboxSelectionModel({
singleSelect:true,
// listeners : {
//
// 'rowselect' : function(selectionModel, rowIndex, record) {
// this.actionToolBar.enableEditDelete();
// },
// 'rowdeselect' : function(selectionModel, rowIndex,
// record) {
// if (!selectionModel.hasSelection()) {
// this.actionToolBar.disableEditDelete();
// }
// },
// scope : this
// }
});
this.colModel = new Ext.grid.ColumnModel([this.selModel,{
header : '主键',
dataIndex : 'id',
hidden : true
},{
header : '印章名称',
dataIndex : 'sealName',
width : 150
},{
header : '启用/停用',
dataIndex : 'isEnable',
width : 150,
renderer:function(value){
if(value==1){
return "启用";
}else if(value==0){
return "停用";
}
return value;
}
},{
header : '修改人',
dataIndex : 'realName',
width : 150
},{
header : '修改时间',
dataIndex : 'updateTime',
width : 150,
renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')
},{
header : '备注',
dataIndex : 'remark',
width : 150
},{
header : '印章',
dataIndex : 'sealImg',
width:200,
renderer:function(value,metc,record){
return "<img src="+ctx+"/seal/download?sealId="+record.data.id+"&thisTime="+Date.parse(new Date())+" />";
//return ctx+"/seal/download?sealId="+record.data.id;
}
}]);
this.bbar = new Ext.PagingToolbar({
pageSize : this.pageSize,
store : this.store,
displayInfo : true
});
Ext.seal.SealGridPanel.superclass.constructor.call(this, {
store : this.store,
cm : this.colModel,
sm : this.selModel,
tbar : this.actionToolBar,
bbar : this.bbar,
loadMask : true
}); this.on('rowdblclick', this.readSeal, this); this.store.load();
},
addWindow : function() {
var record = this.getSelectionModel().getSelected();
if (this.addWin == null) {
this.addWin = new Ext.seal.SealWin({
saveUrl : this.Url.insertUrl,
store : this.store
});
this.addWin.setTitle("新增印章");
}
this.addWin.reset();
this.addWin.show();
this.addWin.on('show', function(win) {
Ext.getCmp('browseImage').getEl().dom.src='';
},
this);
},
modifyWindow : function() {
var record = this.getSelectionModel().getSelected();
if (record) {
if (this.editWin == null) {
this.editWin = new Ext.seal.SealWin({
saveUrl : this.Url.updateUrl,
store : this.store,
sealId:record.data.id
});
this.editWin.setTitle("修改印章");
}
this.editWin.reset();
this.editWin.show();
this.editWin.on('show', function(win) {
Ext.getCmp('browseImage').getEl().dom.src=ctx+"/seal/download?sealId="+record.data.id+"&thisTime="+Date.parse(new Date());
},
this);
this.editWin.loadRecord(record); } else {
Ext.MessageBox.alert('提示', '请选中一条记录!');
} },
deleteWindow : function() {
/** 选中的记录 */
var record = this.getSelectionModel().getSelected();
if(!record){
Ext.MessageBox.alert('提示', '请选中一条记录!');
return;
}
Ext.MessageBox.confirm('提示', '您确定要删除选中记录吗?', function(btn) {
if (btn == 'yes') {
Ext.Ajax.request({
url : this.Url.deleteUrl,
method : 'post',
params : {
id : record.data.id
},
success : function(response, options) {
var text = Ext.util.JSON.decode(response.responseText);
Ext.MessageBox.alert('提示', text.msg,function(){
if(text.success){
this.store.reload();
}
},this);
},
failure : function(response, options) {
Ext.MessageBox.alert('提示', '请求失败!');
},
scope : this
});
}
}, this);
},
/** 查看印章 */
readSeal : function(grid, rowIndex, e) {
var rec = grid.getStore().getAt(rowIndex);
if (rec == undefined) {
Ext.Msg.alert("提示", "每次只能且必须查看一条记录");
} else {
if (this.readWin == null) {
this.readWin = new Ext.seal.SealReadWindow({
sealId:rec.data.id
});
this.readWin.setTitle('查看详细');
}
this.readWin.show();
Ext.Ajax.request({
url : this.Url.findByIdUrl,
method : 'post',
params : {
sealId : rec.data.id
},
success : function(response, opts) {
var content = Ext.decode(response.responseText);
this.readWin.loadSeal(content);
},
scope : this
});
}
},
/**启用*/
isEnableTrue:function(){
var record = this.getSelectionModel().getSelected();
if(!record){
Ext.MessageBox.alert('提示', '请选中一条记录!');
return;
}else if(record.data.isEnable==1){
Ext.MessageBox.alert('提示','选中行已经启用!');
return;
}
Ext.Ajax.request({
url : this.Url.isEnableOrNot,
method : 'post',
params : {
id : record.data.id,
isEnable:1
},
success : function(response, options) {
var text = Ext.util.JSON.decode(response.responseText);
Ext.MessageBox.alert('提示', text.msg,function(){
if(text.success){
this.store.reload();
}
},this);
},
failure : function(response, options) {
Ext.MessageBox.alert('提示', '请求失败!');
},
scope : this
});
},
/**停用*/
isEnableFalse:function(){
var record = this.getSelectionModel().getSelected();
if(!record){
Ext.MessageBox.alert('提示', '请选中一条记录!');
return;
}else if(record.data.isEnable==0){
Ext.MessageBox.alert('提示','选中行已经停用!');
return;
}
Ext.Ajax.request({
url : this.Url.isEnableOrNot,
method : 'post',
params : {
id : record.data.id,
isEnable:0
},
success : function(response, options) {
var text = Ext.util.JSON.decode(response.responseText);
Ext.MessageBox.alert('提示', text.msg,function(){
if(text.success){
this.store.reload();
}
},this);
},
failure : function(response, options) {
Ext.MessageBox.alert('提示', '请求失败!');
},
scope : this
});
}
});

extreturn实体类:

package cn.edu.hbcf.common.vo;

/**
* Ext Ajax 返回对象
*
* @author LiPenghui
* @date 2012-02-21 19:30:00
*
*/ public class ExtReturn { private boolean success; // 是否成功
private Object msg; // 返回消息
private Object otherObject;// 其他对象 public ExtReturn() { } /**
* 是否更新成功的构造方法
*
* @param success
* 是否成功
* @param msg
* 消息
*/
public ExtReturn(boolean success, Object msg) {
this.success = success;
this.msg = msg;
this.otherObject = "";
} /**
* 是否更新成功的构造方法
*
* @param success
* 是否成功
* @param msg
* 消息
* @param otherObject
* 其他对象
*/
public ExtReturn(boolean success, Object msg, Object otherObject) {
this.success = success;
this.msg = msg;
this.otherObject = otherObject;
} /**
* 异常时的构造函数
*
* @param errormsg
* 异常消息
*/
public ExtReturn(Object errormsg) {
this.success = false;
this.msg = false;
this.otherObject = "";
} /**
* 判断是否成功
*
* @return
*/
public boolean isSuccess() {
return success;
} /**
* 设置返回是否成功的状态
*
* @param success
*/
public void setSuccess(boolean success) {
this.success = success;
} /**
* 设置其他对象
*
* @return
*/
public Object getOtherObject() {
return otherObject;
} /**
* 获取其他对象
*
* @param otherObject
*/
public void setOtherObject(Object otherObject) {
this.otherObject = otherObject;
} /**
* 获取返回的消息
*
* @return
*/
public Object getMsg() {
return msg;
} /**
* 设置返回的消息
*
* @param msg
*/
public void setMsg(Object msg) {
this.msg = msg;
}
}

文件下载controller:

/**
* 下载附件
* @param response
* @param request
* @param blobId 附件主键
* @throws UnsupportedEncodingException
*/
@RequestMapping("/download")
public void download (HttpServletResponse response,HttpServletRequest request,String sealId,String thisTime) throws UnsupportedEncodingException{
Seal seal = sealService.getSeal(sealId);
InputStream inputStream=new ByteArrayInputStream(seal.getSealImage()); byte[] b = new byte[1024];
int len = -1;
OutputStream out = null;
String filename="";
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") >0)
filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
else
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
response.reset();//清除首部的空白行
//下载的文件内容
// response.setContentType("application/x-msdownload");
// response.setContentType("text/html;charset=utf-8;");
response.setContentType("image/jpeg;charset=utf-8");
//下载的文件头部内容(自动下载)
// response.setHeader("Content-Disposition", "attachment;filename=" + filename.replace(" ", "_") );
//输出文件内容
response.setHeader("Content-type", "attachment;filename=" + filename.replace(" ", "_") );
// response.setHeader("Connection", "close");
try {
while ((len = inputStream.read(b, 0, 1024)) != -1) {
out = response.getOutputStream();
out.write(b, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
/**
* 下载附件
* @param response
* @param request
* @param blobId 附件主键
* @throws UnsupportedEncodingException
*/
@RequestMapping("/download")
public void download (HttpServletResponse response,HttpServletRequest request,String sealId,String thisTime) throws UnsupportedEncodingException{
Seal seal = sealService.getSeal(sealId);
InputStream inputStream=new ByteArrayInputStream(seal.getSealImage()); byte[] b = new byte[1024];
int len = -1;
OutputStream out = null;
String filename="";
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") >0)
filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
else
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
response.reset();//清除首部的空白行
//下载的文件内容
// response.setContentType("application/x-msdownload");
// response.setContentType("text/html;charset=utf-8;");
response.setContentType("image/jpeg;charset=utf-8");
//下载的文件头部内容(自动下载)
// response.setHeader("Content-Disposition", "attachment;filename=" + filename.replace(" ", "_") );
//输出文件内容
response.setHeader("Content-type", "attachment;filename=" + filename.replace(" ", "_") );
// response.setHeader("Connection", "close");
try {
while ((len = inputStream.read(b, 0, 1024)) != -1) {
out = response.getOutputStream();
out.write(b, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

mapper:

<?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="cn.edu.hbcf.plugin.seal.dao.SealMapper"> <!-- 查询所有的印章管理数据 -->
<select id="queryListForPage" resultType="cn.edu.hbcf.plugin.seal.pojo.Seal" parameterType="cn.edu.hbcf.common.vo.Criteria">
SELECT
l.id id,
l.update_user updateUser,
l.update_time updateTime,
l.seal_name sealName,
l.remark remark,
l.is_enable isEnable,
l.seal_image sealImage,
s.real_name realName
FROM
seal l
LEFT JOIN base_users s
ON l.update_user = s.user_id
WHERE l.seal_name IS NOT NULL
AND seal_name != ''
<if test="condition.limit != null">
<![CDATA[ limit #{condition.start},#{condition.limit} ]]>
</if>
</select> <!-- 查询所有的印章管理数据的总数 -->
<select id="getTotalCount" resultType="int" parameterType="cn.edu.hbcf.common.vo.Criteria">
SELECT
count(*)
FROM
seal l
</select>
<!-- 新增印章数据 -->
<insert id="insert" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
<selectKey resultType="String" keyProperty="id" order="BEFORE">
select replace(uuid(), '-', '') from dual
</selectKey>
INSERT INTO seal(id,update_user,update_time,seal_name,remark,is_enable,seal_image)
VALUES(#{id},#{updateUser},#{updateTime},#{sealName},#{remark},#{isEnable},#{sealImage})
</insert> <!-- 修改印章数据 -->
<update id="update" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
UPDATE seal SET update_user=#{updateUser},update_time=#{updateTime},
<if test="sealName!=null">seal_name=#{sealName},</if>
<if test="remark!=null">remark=#{remark},</if>
<if test="isEnable!=null">is_enable=#{isEnable},</if>
<if test="sealImage!=null">seal_image=#{sealImage}</if>
WHERE id=#{id}
</update> <!-- 批量删除印章数据 -->
<delete id="delete">
delete from seal
<where>
id in
<foreach collection="ids" item="item" index="index"
open="(" separator="," close=")">#{item}</foreach>
</where>
</delete> <!-- 新增印章图片到数据库中 -->
<insert id="insertSeal" parameterType="String">
<selectKey resultType="String" keyProperty="id" order="BEFORE">
select replace(uuid(), '-', '') from dual
</selectKey>
insert into seal(id,seal_image) values(#{id},#{sealImage})
</insert> <!-- 修改印章图片 -->
<update id="updateSeal" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
update seal set seal_image=#{sealImage} where id=#{id}
</update> <!-- 根据Id查询信息-->
<select id="getSeal" resultType="cn.edu.hbcf.plugin.seal.pojo.Seal" parameterType="java.lang.String">
SELECT
l.id id,
l.update_user updateUser,
l.update_time updateTime,
l.seal_name sealName,
l.remark remark,
l.is_enable isEnable,
l.seal_image sealImage,
s.real_name realName
FROM
seal l
LEFT JOIN base_users s
ON l.update_user = s.user_id
WHERE l.id = #{id}
</select> <!-- 启用或者停用 -->
<update id="isEnableOrNot" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
UPDATE seal SET is_enable=#{isEnable}
WHERE id=#{id}
</update>
</mapper>

最新文章

  1. Android开发(三十二)——延时
  2. Swift项目兼容Objective-C问题汇总
  3. Apache 日志分析(一)
  4. ASP.NET操作WMI
  5. jquery formValidate demo 采用struts 异步方式检验用户名是否存在
  6. 增强的for循环(或foreach)
  7. php函数参数
  8. mysql root密码
  9. CSS属性定义 文本修饰 边框效果 背景修饰
  10. Dynamics CRM2016 Supported versions of Internet Explorer and Microsoft Edge
  11. libevent入门介绍
  12. Inspector did not run successfully.
  13. sklearn神经网络分类
  14. Android训练课程(Android Training) - 高效的显示图片
  15. pyhon 列表的增删改查
  16. 观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?
  17. IntelliJ IDEA 14 利用JRebel实现热部署
  18. XML基础知识--&gt;Spring配置
  19. Bash编程(5) Shell方法
  20. linux简介及虚拟机安装

热门文章

  1. CVE: 2014-6271、CVE: 2014-7169 PATCH方案分析
  2. NSKeyedArchiver 类 格式
  3. c++ 类型安全
  4. WGS84、Web墨卡托、火星坐标、百度坐标互转
  5. MapReduce使用JobControl管理实例
  6. R语言的前世今生(转)
  7. JQ系列:css操作
  8. js实现剪切、复制、粘贴——clipBoard.js
  9. 关于angularjs 中自定义过滤器
  10. [codeforces 241]C. Mirror Box