Mybatis+Jfinal框架下使用jxl导入EXCEL表格,Jfinal调用存储过程

Mybatis+Jfinal框架下使用jxl导入EXCEL表格,Jfinal调用存储过程

需要导入 jxl.jar
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import jxl.Sheet;
import jxl.Workbook;

//service层--------
	public static List<Memberships> getAllByExcel(String file) {
		List<Memberships> list = new ArrayList<Memberships>();
		try {
			Workbook rwb = Workbook.getWorkbook(new File(file));//获取工作簿
			Sheet rs = rwb.getSheet(0);// 第一页数据	
			int clos = rs.getColumns();// 第一页中得到所有的列
			int rows = rs.getRows();// 第一页中得到所有的行
			for (int i = 1; i < rows; i++) {
				for (int j = 0; j < clos; j++) {
					//先循环行数 有几行就是几个对象   再循环列数 把每个对象的属性单独分离
					String ID = rs.getCell(j++, i).getContents();// 默认最左边编号也算一列
					// 所以这里得j++
					String Department = rs.getCell(j++, i).getContents();
					String Specialty = rs.getCell(j++, i).getContents();
					String Degree = rs.getCell(j++, i).getContents();
                    //ID,Department,Specialty,Degree//实体类的各个参数,自己设置
					System.out.println("ID:" + ID + " Department:" + Department
							+ " Specialty:" + Specialty + " Degree:" + Degree);
					list.add(new Memberships().set("ID", Integer.parseInt(ID))
							.set("Department", Department)
							.set("Specialty", Specialty).set("Degree", Degree));
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;

	}
//调用存储过程
public static int check(String name, List<Object> a) {
		ProcUtil p = new ProcUtil(name, a);
		Db.execute(p);
		return p.result;
	}
	

	//controller层---------------
		public void inputMemberships() {
		List<Memberships> list = new ArrayList<Memberships>();
		String file = getPara("filename");
		// 得到表格中所有的数据
		List<Memberships> listExcel = libservice.getAllByExcel(file);
		for (Memberships Memberships : listExcel) {
			li.add(0, Memberships.get("ID"));
			li.add(1, Memberships.get("Department"));
			li.add(2, Memberships.get("Specialty"));
			li.add(3, Memberships.get("Degree"));

			int b = libservice.check("procheck", li);
			li.clear();
			if (b > 0) {
				list.add(Memberships);
				renderText("已存在");
			} else {
				renderText("插入成功");
			}
			renderText("s" + list);
			HttpSession session = getSession();
			session.setAttribute("mem", list);
		}

	}

//工具类-----------------
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import com.jfinal.plugin.activerecord.ICallback;

public class ProcUtil implements ICallback {
	/**
	 * 存储过程的名字
	 */
	String procName = null;
	/**
	 * 存储过程的输入参数
	 */
	List<Object> params = null;
	/**
	 * 返回结果
	 */
	public int result = 0;
	/**
	 * 完成初始化
	 * @param procName
	 * @param params
	 */
	public ProcUtil(String procName,List<Object> params){
		this.procName = procName;
		this.params = params;
	}

	@Override
	public Object call(Connection conn) throws SQLException {
		
		CallableStatement proc = null;//操作对象
        try {             
           //拼接存储过程的名字和参数
        	String str = procName+"(";
        	int s = params.size();
        	for(int i=0;i<s;i++){
        		str = str+"?,";
        	}
        	str = str+"?)";
        	System.out.println("{ call "+str+" }");
          proc = (CallableStatement) conn.prepareCall("{ call "+str+" }"); //调用存储过程
          for(int i=0;i<s;i++){
          proc.setObject(i+1, params.get(i));//设置参数值  
          }    
          proc.registerOutParameter(s+1, java.sql.Types.INTEGER);//设置返回值类型  
          proc.execute();  
         result =  proc.getInt(s+1);//得到返回值  
         //System.out.println("结果:"+result);
   }catch(Exception e){  
           e.printStackTrace(); 
           return null;
    }  
		return result;
	}

}

//Mybatis存储过程 --------------
IN memid INT,in Department varchar(50),in Specialty varchar(50),in Degree varchar(50),OUT num int
BEGIN
DECLARE A INT;
set @A=(SELECT COUNT(ID) FROM memberships WHERE ID=memid);
IF @A>0 THEN
select 1 into num;
ELSE
insert into memberships (Department,Specialty,Degree) values(Department,Specialty,Degree);
select -1 into num;
END IF;
END
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小熊的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值