用java程序和mybatis通过流式读取数据库读一条写入文件一条
可以使用以下代码实现:
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Main {
private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
private static final String DB_USERNAME = "username";
private static final String DB_PASSWORD = "password";
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Main.class.getClassLoader().getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sessionFactory.openSession();
try {
Writer writer = new FileWriter("output.txt");
sqlSession.select("com.example.mapper.MyMapper.select", null, (resultContext) -> {
MyData data = (MyData) resultContext.getResultObject();
try {
writer.write(data.toString() + "\n");
} catch (IOException e) {
e.printStackTrace();
}
});
writer.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
}
}
class MyData {
private int id;
private String name;
public MyData(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "MyData [id=" + id + ", name=" + name + "]";
}
}
其中,MyMapper 对应的 XML 配置文件如下:
<mapper namespace="com.example.mapper.MyMapper">
<select id="select" resultType="com.example.Main$MyData">
SELECT * FROM mytable
</select>
</mapper>
这样,就可以从数据库中读取数据,并将数据流式写入到文件中
原文地址: https://www.cveoy.top/t/topic/ggnw 著作权归作者所有。请勿转载和采集!