logo

Java工商信息管理系统:数据存储与Web查询实践

作者:渣渣辉2025.09.26 11:31浏览量:5

简介:本文详细介绍如何使用Java实现工商信息查询与存储,并通过JavaWeb技术构建查询功能,涵盖从数据获取、数据库设计到Web层实现的全流程。

一、引言

在信息化时代,企业工商信息管理是许多业务系统(如供应链管理、信用评估)的核心模块。本文将围绕“Java实现查询工商信息存储数据库中”及“JavaWeb实现查询功能”两大核心需求,详细阐述从数据获取、数据库设计到Web层实现的全流程,帮助开发者快速构建高效、可扩展的工商信息管理系统。

二、技术选型与架构设计

1. 技术栈选择

  • 后端语言:Java(JDK 11+),利用其强类型、面向对象特性保证代码健壮性。
  • 数据库:MySQL 8.0,支持事务、索引优化,适合高频查询场景。
  • Web框架:Spring Boot 2.7(简化配置)+ Spring MVC(处理HTTP请求)。
  • 前端展示:Thymeleaf模板引擎(避免前后端耦合)+ Bootstrap(快速构建响应式界面)。
  • 工具库
    • HttpClient:调用第三方工商信息API(如国家企业信用信息公示系统)。
    • Jackson:JSON数据解析与序列化。
    • MyBatis-Plus:简化数据库操作,支持动态SQL。

2. 系统架构

  • 分层设计
    • 数据层:DAO接口+MyBatis映射文件,负责数据库CRUD。
    • 服务层:Service接口+实现类,封装业务逻辑(如数据校验、异常处理)。
    • 控制层:Controller类,接收HTTP请求,返回JSON或视图。
    • 前端层:Thymeleaf模板+AJAX,实现无刷新查询。

三、Java实现工商信息查询与存储

1. 数据获取与解析

1.1 调用第三方API

以国家企业信用信息公示系统为例,使用HttpClient发送GET请求:

  1. public class EnterpriseApiClient {
  2. private static final String API_URL = "https://api.example.com/enterprise/query";
  3. public String fetchEnterpriseData(String keyword) throws IOException {
  4. CloseableHttpClient httpClient = HttpClients.createDefault();
  5. HttpGet request = new HttpGet(API_URL + "?keyword=" + URLEncoder.encode(keyword, "UTF-8"));
  6. request.setHeader("Authorization", "Bearer YOUR_API_KEY");
  7. try (CloseableHttpResponse response = httpClient.execute(request)) {
  8. return EntityUtils.toString(response.getEntity());
  9. }
  10. }
  11. }

1.2 JSON解析

使用Jackson将API返回的JSON转换为Java对象:

  1. public class Enterprise {
  2. private String name;
  3. private String creditCode;
  4. private String registerDate;
  5. // getters & setters
  6. }
  7. public List<Enterprise> parseEnterpriseData(String json) throws IOException {
  8. ObjectMapper mapper = new ObjectMapper();
  9. JavaType type = mapper.getTypeFactory().constructCollectionType(List.class, Enterprise.class);
  10. return mapper.readValue(json, type);
  11. }

2. 数据库设计与存储

2.1 数据库表设计

  1. CREATE TABLE enterprise (
  2. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  3. name VARCHAR(100) NOT NULL,
  4. credit_code VARCHAR(18) UNIQUE NOT NULL,
  5. register_date DATE,
  6. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  7. );

2.2 数据持久化

使用MyBatis-Plus实现批量插入:

  1. @Service
  2. public class EnterpriseService {
  3. @Autowired
  4. private EnterpriseMapper enterpriseMapper;
  5. public void saveEnterprises(List<Enterprise> enterprises) {
  6. // 批量插入(MyBatis-Plus支持)
  7. enterpriseMapper.insertBatchSomeColumn(enterprises);
  8. }
  9. }

四、JavaWeb实现查询功能

1. 控制器层实现

  1. @Controller
  2. @RequestMapping("/enterprise")
  3. public class EnterpriseController {
  4. @Autowired
  5. private EnterpriseService enterpriseService;
  6. @GetMapping("/search")
  7. public String search(Model model, @RequestParam String keyword) {
  8. List<Enterprise> enterprises = enterpriseService.searchByNameOrCreditCode(keyword);
  9. model.addAttribute("enterprises", enterprises);
  10. return "enterprise/list"; // 返回Thymeleaf模板
  11. }
  12. @ResponseBody
  13. @GetMapping("/api/search")
  14. public List<Enterprise> apiSearch(@RequestParam String keyword) {
  15. return enterpriseService.searchByNameOrCreditCode(keyword);
  16. }
  17. }

2. 服务层逻辑

  1. @Service
  2. public class EnterpriseService {
  3. @Autowired
  4. private EnterpriseMapper enterpriseMapper;
  5. public List<Enterprise> searchByNameOrCreditCode(String keyword) {
  6. QueryWrapper<Enterprise> wrapper = new QueryWrapper<>();
  7. wrapper.like("name", keyword)
  8. .or()
  9. .like("credit_code", keyword);
  10. return enterpriseMapper.selectList(wrapper);
  11. }
  12. }

3. 前端展示

3.1 Thymeleaf模板

  1. <!-- enterprise/list.html -->
  2. <table class="table">
  3. <thead>
  4. <tr>
  5. <th>企业名称</th>
  6. <th>统一社会信用代码</th>
  7. <th>注册日期</th>
  8. </tr>
  9. </thead>
  10. <tbody>
  11. <tr th:each="enterprise : ${enterprises}">
  12. <td th:text="${enterprise.name}"></td>
  13. <td th:text="${enterprise.creditCode}"></td>
  14. <td th:text="${#dates.format(enterprise.registerDate, 'yyyy-MM-dd')}"></td>
  15. </tr>
  16. </tbody>
  17. </table>

3.2 AJAX无刷新查询

  1. // 使用jQuery发送异步请求
  2. $("#searchBtn").click(function() {
  3. const keyword = $("#keyword").val();
  4. $.get("/enterprise/api/search", { keyword: keyword }, function(data) {
  5. const html = data.map(item => `
  6. <tr>
  7. <td>${item.name}</td>
  8. <td>${item.creditCode}</td>
  9. <td>${new Date(item.registerDate).toLocaleDateString()}</td>
  10. </tr>
  11. `).join("");
  12. $("#resultTable tbody").html(html);
  13. });
  14. });

五、优化与扩展

  1. 性能优化

    • 数据库索引:在namecredit_code字段上添加索引。
    • 缓存:使用Redis缓存高频查询结果。
    • 分页:MyBatis-Plus的Page类实现分页查询。
  2. 安全

    • 输入校验:防止SQL注入(MyBatis-Plus已内置)。
    • 权限控制:Spring Security实现接口鉴权。
  3. 扩展性

    • 支持更多查询条件(如注册地区、行业分类)。
    • 集成Elasticsearch实现全文检索。

六、总结

本文通过完整的代码示例,展示了如何使用Java实现工商信息查询与存储,并通过JavaWeb技术构建查询功能。关键点包括:

  1. 使用HttpClient调用第三方API获取数据。
  2. 通过MyBatis-Plus简化数据库操作。
  3. 利用Spring MVC处理HTTP请求,结合Thymeleaf/AJAX实现前后端交互。
  4. 通过分层设计提升代码可维护性。

开发者可根据实际需求调整技术选型(如替换为PostgreSQL或Vue.js),但核心逻辑(数据获取、存储、查询)具有通用性,适用于各类企业信息管理系统。

相关文章推荐

发表评论

活动