首页 > 解决方案 > 我在java API中使用mybatis,它每天自动停止,重启后正常工作

问题描述

我使用 java API 和 mybatis 在数据库中一次插入多个数据。它工作正常,但每天在 Web 逻辑服务器上自动停止服务。

标签: javamybatis

解决方案


我的服务代码文件如下 -

(1) 动作方法类——

public void insertListDetails(){


ObjectMapper jsonObjMapper = new ObjectMapper();

jsonObjMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);




    SqlSession sqlSession = null;

    String responseStr = null;

    List<String> list_desc = new ArrayList<String>();
    List<String> list_status = new ArrayList<String>();
    List<String> list_remark = new ArrayList<String>();

    list_desc.add(description);
    list_status.add(status);
    list_remark.add(remark);


    String descSeprated = "";
    String statusSeprated = "";
    String remarkSeprated = "";

    response.setContentType("application/json");


try {



        ServerResponse<String> serverResponse = new ServerResponse<String>();
        boolean isError = false;



        if (!isError) {

            try {
                sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();


                InsertListMappers apiMapper = 
                sqlSession.getMapper(InsertListMappers.class);

                InsertList apiDetail = new InsertList();


                for (String string_1 : list_desc) {
                    if (descSeprated.equals("")) {
                        descSeprated = string_1;
                    } else
                        descSeprated = descSeprated + "#" + string_1;
                }
                for (String string_2 : list_status) {
                    if (statusSeprated.equals("")) {
                        statusSeprated = string_2;
                    } else
                        statusSeprated = statusSeprated + "#" + string_2;
                }
                for (String string_3 : list_remark) {
                    if (remarkSeprated.equals("")) {
                        remarkSeprated = string_3;
                    } else
                        remarkSeprated = remarkSeprated + "#" + string_3;
                }



                String[] data_desc = descSeprated.split("#");
                String[] data_status = statusSeprated.split("#");
                String[] data_remark = remarkSeprated.split("#");



                for (int i=0; i<data_desc.length ; i++) {



                    apiDetail.setDocEntry(docEntry);
                    apiDetail.setDescription(data_desc[i]);
                    apiDetail.setStatus(data_status[i]);
                    apiDetail.setRemark(data_remark[i]);


                    apiMapper.insertListDetails(apiDetail);
                    sqlSession.commit();




                }



            } catch (Exception e1) {
                e1.printStackTrace();
            }


            serverResponse.setStatus(ServerResponse.STATUS.OK);
            serverResponse.setData("Record inserted sucessfully");




        }

        responseStr = jsonObjMapper.writeValueAsString(serverResponse);
        response.getWriter().write(responseStr);

    } catch (Exception e) {

        e.printStackTrace();

    } finally {
        if (sqlSession != null) {
            sqlSession.close();
        }
    }
}

(2) 这是用于数据库查询的 xml 文件 -

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN'
'http://mybatis.org/dtd/mybatis-3-mapper.dtd'>

<mapper namespace='com.ti.mappers.InsertListMappers'>
<resultMap type='InsertList' id='InsertListResult'>

    <result property='docEntry' column='DOCENTRY' />
    <result property='description' column='U_DESC' />
    <result property='status' column='U_STATUS' />
    <result property='remark' column='U_REASON' />
    <result property='lineId' column='LINEID' />

  </resultMap>

  <insert id='insertListDetails' parameterType='InsertList'>

    INSERT INTO
    HKCHKREC_L(DOCENTRY, U_DESC, U_STATUS, U_REASON, LINEID)
    VALUES(#{docEntry},#{description},#{status},#{remark},#{lineId})
  </insert>

</mapper>

推荐阅读