Java程序员的日常—— POI与JDBC、Mockmvc与单元测试

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);
            }
        });
    }
}
posted @ 2016-09-05 22:23 xingoo 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache POI库来操作Word文档,下面是一个示例代码,演示如何使用POI向Word文档中写入文字和图片。 ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.util.IOUtils; public class WordWriter { public static void main(String[] args) throws Exception { // 创建一个新的Word文档对象 XWPFDocument doc = new XWPFDocument(); // 创建一个新的段落 XWPFParagraph para = doc.createParagraph(); // 创建一个新的文本运行 XWPFRun run = para.createRun(); // 设置文本运行的内容 run.setText("Hello World!"); // 添加一个换行符 para.createRun().addBreak(); // 读取图片文件 FileInputStream fis = new FileInputStream(new File("image.jpg")); // 将图片文件转换为二进制数组 byte[] bytes = IOUtils.toByteArray(fis); // 关闭文件输入流 fis.close(); // 创建一个新的段落 para = doc.createParagraph(); // 创建一个新的文本运行 run = para.createRun(); // 插入图片 run.addPicture(bytes, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(300), Units.toEMU(200)); // 保存Word文档 FileOutputStream fos = new FileOutputStream(new File("output.docx")); doc.write(fos); fos.close(); } } ``` 上述代码中,首先创建了一个新的Word文档对象。然后创建了一个新的段落和文本运行,并设置了文本运行的内容。接着添加了一个换行符。接下来,读取了一个图片文件,将其转换为二进制数组,并插入到一个新的段落中。最后,将Word文档保存到文件中。 注意,在实际使用中,需要根据具体情况设置图片的类型和大小。此外,还可以设置图片的位置、对齐方式等属性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值