Java程序员的日常—— POI与JDBC、Mockmvc与单元测试
周日没怎么休息好,周一一天都迷迷糊糊的,不过还算是干了不少的活。
总结一下,大致有以下几点内容:
- 1 使用poi以及mysql jdbc实现了一个复杂excel的导入
- 2 基于工程原有的代码,书写spring mvc的业务代码以及测试用例
使用POI以及jdbc
POI是用于处理excel文件很常用的工具,如果你的excel是比较老的版本,记xls结尾的,那么只使用poi就行了。如果是xlsx结尾的,还需要引入xssf的jar包。
参考maven的pom.xml配置:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
使用的话,这里就简单介绍下数据的读取:
InputStream stream = new FileInputStream("绝对路径\\文件名.xlsx");//获得输入流
XSSFWorkbook wb=new XSSFWorkbook(stream);//xlsx版本使用XSSFWorkbook
Sheet sheet1 = wb.getSheetAt(1);//获取制定的sheet页内容
for(int i=0,total = sheet1.getLastRowNum();i<total;i++){
Row row = sheet1.getRow(i);//row.getCell(no)就能获取指定列的内容
}
JDBC动态参数
使用JDBC还是很基础的内容了,这里使用动态sql动态拼接条件:
sql = "select id from scp_b where name=? and code=?";
相应的查询:
PreparedStatement sta = conn.prepareStatement(sql);
sta.setString(1, "xxx";
sta.setString(2, "yyyy");
ResultSet rs = sta.executeQuery();
while(rs.next()){
System.out.println(rs.getString("id"));
}
sta.close();
使用Mockmvc进行mvc的单元测试
以前没有web mvc的单元测试经验,所以这部分的内容还得继续学习下,才能总结好。
不过,有一点还是需要明确的,就是单元测试。
单元测试,是最基本的程序验证的方法。之前还流行过TDD测试驱动开发的软件方法论,即需要先写出测试用例,然后再去写实现。这样的好处就是在编写实现之前,就明确知道输入是什么,输出是什么...不过,真正做到这点的,全国也没有多少吧。大多是写完实现,开发者自己补上测试用例,用来验证一些简单的场景而已。
@WebAppConfiguration
public class aaaTest extends BaseTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void OrderTendencyDataProfilingChart() throws Exception{
this.mockMvc.perform(post("/a/b")
.accept(MediaType.APPLICATION_JSON)
.characterEncoding("UTF-8")
.param("1", "2")
.header(ApiTokenUtils._tokenName, ApiTokenUtils.getToken()))
.andExpect(status().isOk())
.andDo(new ResultHandler() {
@Override
public void handle(MvcResult result) throws Exception {
result.getResponse().setCharacterEncoding("UTF-8");
String content = result.getResponse().getContentAsString();
System.out.println(content);
}
});
}
}
Java程序员的日常—— POI与JDBC、Mockmvc与单元测试的更多相关文章
- Java程序员的日常——经验贴(纯干货)
工作当中遇到的事情比较杂,因此涉及的知识点也很多.这里暂且记录一下,今天遇到的知识点,纯干货~ 关于文件的解压和压缩 如果你的系统不支持tar -z命令 如果是古老的Unix系统,可能并不认识tar ...
- Java程序员的日常—— 《编程思想》关于类的使用常识
Java虽然利用JVM,让程序员可以放心大胆的使用,可是仍然会出现内存泄露等问题.世上没有绝对的银弹,因此也不能完全把所有的任务都交给JVM,了解Java中的初始化与垃圾回收还是必不可少的知识. 关于 ...
- Java程序员的日常—— Properties文件的读写
在日常的Java程序开发中,Properties文件的读写是很常用的.经常有开发系统通过properties文件来当做配置文件,方便用户对系统参数进行调整. 那么本片就来简单的介绍下,如何使用Prop ...
- Java程序员的日常—— 垃圾回收中引用类型的作用
在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...
- Java程序员的日常 —— 多进程开发
最近再弄进程管理相关的工作,因此必要的就涉及到各种系统下关于进程的管理. 这里简单的介绍下: 如何在Java中执行命令 在windows下肯定是dos命令了,而在linux则为shell命令.执行的方 ...
- Java程序员的日常——存储过程知识普及
存储过程是保存可以接受或返回用户提供参数的SQL语句集合.在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装.可以在数据库中定义子程序,然后把子程序存储在数据库服务器, ...
- Java程序员的日常 —— 《编程思想》持有对象
集合框架可以说是Java里面必备的知识点了,日常的使用中也会遇到各种情况需要使用到集合.下面就简单介绍下各种集合的使用场景: List List可以看做是数组,实现的方式有两种: ArrayList ...
- Java程序员的日常 —— static的用法讲解实践
之前文章说过Java中static的作用,有朋友想看个例子.于是便抽空写了个小栗子 代码 package xing.test.thinking.chap5; class A{ public A() { ...
- Java程序员的日常—— Arrays工具类的使用
这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...
随机推荐
- 猜数字 事先给定一个数字,然后让用户猜3次,猜不中就输了,猜中就赢了。 每次猜错,给出提示,less or big
c = 0a = 10while c <3: b = int(raw_input("请输入数字")) if b == a: print " ...
- js原生实现选项卡功能
选项卡在js中是一个重要的知识点.他没有那么难,但在工作中却有重要的位置.几乎在每一个网站都能看到选项卡的实例.所以今天写一下选项卡的实现. 我们设想有三个按钮分别来控制三个盒子当我们点击当前的按钮的 ...
- GDB常用命令
一. gdb使用流程 1.编译生成可执行文件 gcc -g hello.c -o hello 2.启动gdb gdb hello 3. 在main处设置断点 break main 4.运行程序 run ...
- LInux javac时, 提示command not found
这个是我之前看了很多的论坛发现的问题,我想了很久也没有发现问题,明明路径都是对的,配置文件也没有错误,为什么最后却只有执行java好使,但是执行javac不好使 因为java分两个版本一个是jre,一 ...
- (转)EntityFramework之领域驱动设计实践
EntityFramework之领域驱动设计实践 - 前言 EntityFramework之领域驱动设计实践 (一):从DataTable到EntityObject EntityFramework之领 ...
- mysql 函数(一)
1.ascii() 查询ascii值,多个字符的情况下,显示左边第一个字符的ascii值 SELECT ASCII("abc"); 等同于 SELECT ASCII("a ...
- linux系统安装软件方法大全
1.源代码包的安装gzip -d apache_1.3.20.tar.gz (解压)tar xvf apache_1.3.20.tar (解包)cd apache_1.3.20 ./configure ...
- 『TCP/IP详解——卷一:协议』读书笔记——16
2013-08-26 22:50:54 6.4 ICMP时间戳请求与应答 ICMP时间戳请求允许系统向另一个系统查询当前的时间.返回的建议值是自午夜开始计算的毫秒数(协调的统一时间,Coordinat ...
- EBS excel模板xml publisher开发
前提: BI publisher下载地址: http://www.oracle.com/technetwork/middleware/bi-publisher/downloads/index.html ...
- highcharts 柱状图 折线图 混合 双纵轴显示
$(function () { $('#container').highcharts({ chart: { zoomType: 'xy' }, title: { text: '' }, colors: ...