本文目录一览:
java生成批量txt文件
Java生成批量txt文件,可以通过循环便利生成,示例如下:
response.setContentType(CONTENT_TYPE);
response.setHeader("Content-disposition", "inline;filename=\"" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + "\";");
HashMap paras = new HashMap();
paras = (HashMap) model.get("paras");
//要导出的文件,其实是Json对象,通知我们要导出哪些表
String files = MapUtils.getString(paras, "file");
//解析成数组
String[] file = files.split(",");
//获取压缩包文件名
String fileName = SysParaConfig.getProperty("fileName");
fileName = new String(fileName + ".zip");
File[] files = new File[file.length];
String path = request.getRealPath("test/download");
//循环遍历生成文件
for (int i = 0; i < file.length; i++) {
String table = file[i];
File toFile = new File(path + "/" + table + ".TXT");
if (!toFile.exists()) {
toFile.createNewFile();
}
FileOutputStream fos = new FileOutputStream(toFile);
StringBuffer sbf = new StringBuffer();
//结果集,按一定规则(比如数据间隔符)查询表
String resultSql = "";
String fieldSql = "";
List fileData = jdbcTemplate.queryForList(fieldSql + " union all " + resultSql);
int dataSize = fileData.size();
for (int j = 0; j < dataSize; j++) {
String result = (String) fileData.get(j).get("data");
sbf.append(result);
if (j != dataSize - 1) {
sbf.append("\r\n");
}
}
fos.write(strBuf.toString().getBytes("GBK"));
fos.flush();
fos.close();
}
怎么用java同时实现批量删除,批量修改
//1,可以利用循环批量来操作数组元素
int arr[] = new int[100]; //定义一个数组,长度为100
//对该数组进行批量赋值
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
//2,对于集合,可以使用removeALL方法进行批量删除
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.removeAll(list);
System.out.println(list);
//3,JDBC
/**
* 对于数据库的操作,就需要用SQL语言来批量处理了;
* 比如:select *from EMP;
*
* 利用JDBC的一些方法,比如预处理命令,可以对数据库进行批量操作,
*/
java 如何批量插入数据
通过jdbc就可以执行批量插入了。 以下案例:
- 逐条执行10万次
- 分批执行将10万分成m批,每批n条,分多种分批方案来执行。
/**
* 批处理执行
*
* @param m 批次
* @param n 每批数量
* @throws Exception 异常时抛出
*/
public static void testInsertBatch(int m, int n) throws Exception {
init(); //初始化环境
Long start = System.currentTimeMillis();
for (int i = 0; i < m; i++) {
//从池中获取连接
Connection conn = myBroker.getConnection();
Statement stmt = conn.createStatement();
for (int k = 0; k < n; k++) {
String sql = "\n" +
"insert into testdb.tuser \n" +
"\t(name, \n" +
"\tremark, \n" +
"\tcreatetime, \n" +
"\tupdatetime\n" +
"\t)\n" +
"\tvalues\n" +
"\t('" + RandomToolkit.generateString(12) + "', \n" +
"\t'" + RandomToolkit.generateString(24) + "', \n" +
"\tnow(), \n" +
"\tnow()\n" +
")";
//加入批处理
stmt.addBatch(sql);
}
stmt.executeBatch(); //执行批处理
stmt.close();
myBroker.freeConnection(conn); //连接归池
}
Long end = System.currentTimeMillis();
System.out.println("批量执行" + m + "*" + n + "=" + m * n + "条Insert操作,共耗时:" + (end - start) / 1000f + "秒!");
}
java中怎么实现批量录入数据
批量数据进入数据库使用addBatch()
和executeBatch()
方法
PreparedStatement.addBatch();
......
PreparedStatement.executeBatch();
需要注意的是一次最多不要超过50条:
- 因为插入的时候数据库已经锁定,然而若是一次性插入太多会造成其他业务的等待。
- 会造成内存的溢出 举例:
PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into ***** values (?, '***')");
for (int i = 0; i < 10000; i++) {
pst.setInt(1, i);
// 把一个SQL命令加入命令列表
pst.addBatch();
}
// 执行批量更新
pst.executeBatch();
// 语句执行完毕,提交本事务
con.commit();
资料来源:CSDN论坛-原资论坛料链接如下 URL SRC:
用java怎样实现批量打印
下面是实现Java批量打印功能的具体工具类,其中的Info类和UserClass为具体的快递面单中要打印的信息,以参数的方式传递过来,循环调用Java PrinterJob服务进行打印;这里的快递尺寸已经调整好,可以使用,如需添加只要根据实际的面单进行调整,也可以专门写一个接口类的形式来创建快递面单的尺寸,本人没有尝试;如遇问题欢迎留言,共同探讨!
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JOptionPane;
import com.myprint.model.Info;
import com.myprint.model.UserClass;
public class PrintUtil implements Printable {
/**
* 纸张尺寸
*/
private double width;
private double height;
/**
* 打印起始坐标
*/
private double startX;
private double startY;
// 打印页数
private int pages;
// 打印数据坐标
private Map<String, Float> pcoord;
// 发件方信息
private SenderInfo info;
// 打印数据源
private List<UserClass> sourcelist;
// private int PAGES = 0;
// private PrintPaper printpaper;
private UserObject obj;
public PrintUtil() {}
public PrintUtil(int expkind, UserObject obj, List<Object> sourcelist) {
this.pcoord = this.pcoord == null ? new HashMap<String, Float>() : this.pcoord;
this.pcoord.clear();
this.info = info;
this.sourcelist = sourcelist;
switch (expkind) {
case 0: // EMS
this.width = 652;
this.height = 360;
this.startX = 30;
this.startY = 80;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 30F);
pcoord.put("nameY", 80F + 30F);
pcoord.put("numX", 30F + 90F);
pcoord.put("numY", 80F + 30F);
pcoord.put("cmpX", 30F);
pcoord.put("cmpY", 80F + 60F);
pcoord.put("addrX", 30F);
pcoord.put("addrY", 80F + 90F);
pcoord.put("RnameX", 30F + 290F);
pcoord.put("RnameY", 80F + 30F);
pcoord.put("RnumX", 30F + 390);
pcoord.put("RnumY", 80F + 30);
pcoord.put("RcmpyX", 30F + 280);
pcoord.put("RcmpyY", 80F + 55);
pcoord.put("RaddrX", 30F + 280);
pcoord.put("RaddrY", 80F + 90);
break;
case 1: // 顺风快递
this.width = 632;
this.height = 412;
this.startX = 40;
this.startY = 30;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 285F);
pcoord.put("nameY", 126F);
pcoord.put("numX", 200F);
pcoord.put("numY", 185F);
pcoord.put("cmpX", 120F);
pcoord.put("cmpY", 126F);
pcoord.put("addrX", 120F);
pcoord.put("addrY", 145F);
pcoord.put("RnameX", 275F);
pcoord.put("RnameY", 240F);
pcoord.put("RnumX", 200F);
pcoord.put("RnumY", 300F);
pcoord.put("RcmpyX", 130F);
pcoord.put("RcmpyY", 240F);
pcoord.put("RaddrX", 130F);
pcoord.put("RaddrY", 270F);
break;
case 2: // 申通快递
this.width = 652;
this.height = 360;
this.startX = 30;
this.startY = 80;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 42F);
pcoord.put("nameY", 100F);
pcoord.put("numX", 62F);
pcoord.put("numY", 200F);
pcoord.put("cmpX", 42F);
pcoord.put("cmpY", 126F);
pcoord.put("addrX", 42F);
pcoord.put("addrY", 155F);
pcoord.put("RnameX", 320F);
pcoord.put("RnameY", 100F);
pcoord.put("RnumX", 330F);
pcoord.put("RnumY", 200F);
pcoord.put("RcmpyX", 310F);
pcoord.put("RcmpyY", 126F);
pcoord.put("RaddrX", 310F);
pcoord.put("RaddrY", 155F);
break;
default:
break;
}
}
/**
* @param Graphic 指明打印的图形环境
* @param PageFormat 指明打印页格式(页面大小以点为计量单位,1点为1英寸的1/72,1英寸为25.4毫米。A4纸大致为595×842点)
* @param pageIndex 指明页号
**/
public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {
// 转换成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
// 设置打印颜色为黑色
g2.setColor(Color.black);
switch (pageIndex) {
case 0:
Font font = new Font("新宋体", Font.PLAIN, 13);
g2.setFont(font); // 设置字体
// BasicStroke bs_3=new BasicStroke(0.5f);
float[] dash1 = { 2.0f };
g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
g2.drawString(info.getSname() == null ? "" : info.getSname(), pcoord.get("nameX"), pcoord.get("SnameY"));
g2.drawString(info.getSnum() == null ? "" : info.getSnum(), pcoord.get("numX"), pcoord.get("numY"));
g2.drawString(info.getScmp() == null ? "" : info.getScmp(), pcoord.get("cmpX"), pcoord.get("cmpY"));
g2.drawString(info.getSaddr() == null ? "" : info.getSaddr(), pcoord.get("addrX"), pcoord.get("addrY"));
g2.drawString(obj.getRname() == null ? "" : obj.getRname(), pcoord.get("rnameX"), pcoord.get("rnameY"));
g2.drawString(obj.getRnum() == null ? "" : obj.getRnum(), pcoord.get("rnumX"), pcoord.get("rnumY"));
g2.drawString(obj.getRcmpy() == null ? "" : obj.getRcmpy(), pcoord.get("rcmpyX"), pcoord.get("rcmpyY"));
g2.drawString(obj.getRaddr() == null ? "" : obj.getRaddr(), pcoord.get("raddrX"), pcoord.get("raddrY"));
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
}
// 打印内容到指定位置
public void printContent() {
if (sourcelist != null && sourcelist.size() > 0) // 当打印内容不为空时
{
// PAGES = printpaper.getSourcelist().size(); // 获取打印总页数
// 书、文档
Book book = new Book();
// 设置成竖打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
// 通过Paper设置页面的空白边距和可打印区域。
Paper p = new Paper();
p.setSize(this.width, this.height); // 纸张大小
p.setImageableArea(this.startX, this.startY, this.width, this.height); // 设置打印区域
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到书中,组成一个页面
book.append(this, pf);
// 获取打印服务对象
PrinterJob job = PrinterJob.getPrinterJob();
// 设置打印类
job.setPageable(book);
try {
// 直接打印
for (UserObject obj : sourcelist) {
this.obj = obj;
job.print();
}
// }
} catch (PrinterException e) {
e.printStackTrace();
}
} else {
// 如果打印内容为空时,提示用户打印将取消
JOptionPane.showConfirmDialog(null, "对不起, 打印内容为空, 打印取消!", "提示", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE);
}
}
}
Java中怎样实现批量删除操作
本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看上面这样的一个页面图: 上面这张图片表现的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的后面提供了一个复选按钮和对应的一个删除操作,可以选中多个进行操作,这里主要是进行删除操作。在执行删除操作之前先要选中对应的行信息,点击删除选中按钮进行删除。当进行多条信息删除的时候,需要使用Java的事务处理机制对数据库进行删除,也就是说删除的时候如果选中的要删除的所有信息其中一条没有成功删除的话,那么就都不删除。 现在是在Java中对数据库实现这一操作,我们可看上面的代码,它实现了对数据库的批量删除操作,代码如下:
public Connection con = null;
public PreparedStatement pstmt = null;
/**
* 获取连接对象
*/
public void getConnection() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/zufang?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "root", "root");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 批量删除信息表中的信息
*
* @param sql
* @param param
* @return
*/
public boolean updateBatchDel(String sql, String[] param) {
boolean flag = false;
getConnection();
try {
con.setAutoCommit(false);
pstmt = con.prepareStatement(sql);
for (int i = 0; i < param.length; i++) {
pstmt.setString(1, param[i].trim());
pstmt.addBatch();
}
pstmt.executeBatch(); // 批量执行
con.commit(); // 提交事务
flag = true;
} catch (SQLException e) {
try {
con.rollback(); // 进行事务回滚
} catch (SQLException ex) {
ex.printStackTrace();
}
} finally {
closeAll(null, pstmt, con);
}
return flag;
}
/**
* 删除某条求租表中的信息
*
* @param id 删除信息的id
* @return 如果删除成功,返回true;否则返回false
*/
public boolean delQiuZu(String id) {
boolean flag = false;
String sql = "delete from qiuzhu where id=?";
String[] param = { id };
flag = bd.updateDate(sql, param);
return flag;
}
控制器servlet中的处理操作代码如下:
package com.sxt.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sxt.biz.ChuZuBiz;
import com.sxt.biz.PageBiz;
import com.sxt.biz.QiuZuBiz;
public class OutDateQiuzuServlet extends HttpServlet {
QiuZuBiz qzb = new QiuZuBiz();
PageBiz pb = new PageBiz();
int pagesize = 10;
boolean flag = true;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
int countpage = pb.getOutDatePageCountQiuzu(pagesize);
request.setAttribute("countpage", countpage);
String nowpage = request.getParameter("nowpage");
String id = request.getParameter("id");
PrintWriter out = response.getWriter();
String command = request.getParameter("command");
if ("del".equals(command)) {
String[] qiuzuIds = request.getParameterValues("selectFlag");
boolean flag = qzb.delQiuzuMany(qiuzuIds);
if (flag) {
out.print("<script>alert('删除成功!');</script>");
} else {
out.print("<script>alert('删除失败!');</script>");
}
}
if (nowpage == null) {
nowpage = "1";
}
if (Integer.valueOf(nowpage) <= 0) {
nowpage = "1";
}
if (Integer.valueOf(nowpage) > countpage) {
nowpage = countpage + "";
}
if (id != null) {
flag = qzb.delQiuZu(id);
}
request.setAttribute("currentpage", nowpage);
List list = qzb.getOutDateQiuZuInfo(Integer.valueOf(nowpage), pagesize);
request.setAttribute("list1", list);
if (flag) {
request.getRequestDispatcher("admin/OutDateQiuzu.jsp").forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
上面是对数据库的操作代码,上面看一下页面中怎样实现的,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib uri="#" prefix="c" %>
<html>
<head>
<title>house</title>
<script type="text/javascript">
// 删除用户控制
function deleteSelect() {
var select = document.getElementsByName("selectFlag");
var flag = false;
for (var i = 0; i < select.length; i++) {
if (select[i].checked) {
flag = true;
break;
}
}
if (!flag) {
alert("请选择需要删除的过期求租信息!");
return;
}
if (window.confirm("确认要删除过期的求租信息吗?")) {
with (document.getElementById("userform")) {
action = "OutDateQiuzuServlet?command=del";
method = "post";
submit();
}
}
}
// 全选/反选操作
function checkAll(ifAll) {
var select = document.getElementsByName("selectFlag");
for (var i = 0; i < select.length; i++) {
select[i].checked = ifAll.checked;
}
}
</script>
</head>
<link rel="stylesheet" href="./skin/css/lianjie.css" type="text/css" />
<body>
<form name="userform" action="ChuzuServlet" method="get">
<table width="1000" height="80" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td height="40" align="center" bgcolor="#F1F1F1"><font color="#FF0000"><b>已过期的求租信息</b></font></td>
</tr>
<tr>
<td align="left">
<input name="btnDelete" class="button1" type="button" id="btnDelete" value="删除选中" onClick="deleteSelect()" />
</td>
</tr>
</table>
<table width="1000" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" style="word-break:break-all;">
<tr align="center">
<td width="15%" height="25" bgcolor="#F1F1F1"><font size="3"><input type="checkbox" name="ifAll" title="全选/反选" onClick="checkAll(this)" checked="checked"/></font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">期望区域</font></td>
<td width="15%" bgcolor="#F1F1F1"><font size="3">装修水平</font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">房型</font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">面积(平米)</font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">价格(元)</font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">添加日期</font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">有效天数</font></td>
<td width="10%" bgcolor="#F1F1F1"><font size="3">剩余天数</font></td>
</tr>
<c:choose>
<c:when test="${empty list1}">
<tr>
<td colspan="8" align="center"><font color="red">还没有过期的求租信息!</font></td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="qiuzu" items="${list1}">
<tr>
<td height="25" align="center" bgcolor="#FFFFFF"><input type="checkbox" name="selectFlag" value="${qiuzu.id}" checked="checked"/></td>
<td align="center" bgcolor="#FFFFFF"><a href="javascript:if(confirm('确定要删除这条过期的求租信息吗?')){location.href='OutDateQiuzuServlet?id=${qiuzu.id}'}" style="COLOR: #0000ff;font-size:14px; TEXT-DECORATION:none;"><font size="2">删除</font></a></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.qwqy}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.zxcd}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.hx}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.jzmj}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.zj}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.addDate}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.yxts}</font></td>
<td align="center" bgcolor="#FFFFFF"><font size="2" color="red">${qiuzu.syts}</font></td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<table width="300" align="center">
<tr>
<td align="center"><font size="2">共${countpage}页</font></td>
<td align="center"><font size="2">${currentpage}/${countpage}页</font></td>
<td align="center"><a href="OutDateQiuzuServlet?nowpage=${1}"><font size="2">首页</font></a></td>
<td align="center"><a href="OutDateQiuzuServlet?nowpage=${currentpage-1}"><font size="2">上一页</font></a></td>
<td align="center"><a href="OutDateQiuzuServlet?nowpage=${currentpage+1}"><font size="2">下一页</font></a></td>
<td align="center"><a href="OutDateQiuzuServlet?nowpage=${countpage}"><font size="2">尾页</font></a></td>
</tr>
</table>
</form>
</body>
</html>