JdbcTemplate 和 entityManager 使用案例

有关后台处理数据的方法

JdbcTemplate 的查询举例说明

一:返回一个数字

public Integer queryByOid(TbbrpPerson tbbrpPersons) {

     

String sql=" SELECT count(*) FROM tbbrp_person T WHERE   T.OID=?";

      Integer personOid = jdbcTemplate.queryForObject(sql,

      new Object[] {tbbrpPersons.getOid() }, Integer.class);

      return personOid;

   }

知识点:将会返回一个数字:Integer.class指定返回类型

 

二:返回部分属性值

public List<String> queryImageInfo(List<ImageInfo> imageInfos){

   StringBuffer inIds=new StringBuffer();

   final List<String> oidList=new ArrayList<String>();

   try {

      for(ImageInfo imageInfo:imageInfos){

         inIds.append("'"+imageInfo.getOid()+"'"+",");

      }

 

jdbcTemplate.query("SELECT t.oid FROM tbbrp_imageinfo t WHERE t.oid IN("+inIds.toString().substring(0,inIds.length()-1)+")",                  new RowCallbackHandler() {

      @Override

   public void processRow(ResultSet rs) throws SQLException {

   oidList.add(rs.getString("oid").replaceAll("", ""));

//如果字段为多个时,可以将值放在对象里,然后放在集合里

            }

   });

   } catch (Exception e) {

         e.printStackTrace();

   }

      return oidList;

   }

知识点:当要获取表的部分字段记录时,可以从rs集合中获取一条记录后在封装所有记录返回出去;

 

 

三:批量查询返回实体数据

首先创建一个类:

public class TellInfoRowMapper implements RowMapper<TellInfo> {

   @Override

public TellInfo mapRow(ResultSet rs, int index) throws SQLException {   

TellInfo tellInfo = new TellInfo();                                   tellInfo.setInsurer_serial_no(rs.getString("insurer_serial"));  

tellInfo.setOid(rs.getString("oid"));

tellInfo.setTell_code(rs.getString("tell_code"));

tellInfo.setTell_person(rs.getString("tell_person"));

tellInfo.setTell_remark(rs.getString("tell_remark"));

tellInfo.setTell_result(rs.getString("tell_result"));

 

      return tellInfo;

   }

 

}

 

其次具体使用

   @Override

   public List<TellInfo> getTellInfo(List<String> serials) {

      StringBuilder sql = new StringBuilder();

      String separator = "','";

      String inParams = listToStrings(serials, separator);

      inParams = inParams.substring(0, inParams.length() - 1);

      sql.append(QUERY_TELLINFO_SQL);

      sql.append(" insurer_serial_no in ( '");

      sql.append(inParams);

      sql.append(" )");

      List<TellInfo> tellinfos=jdbcTemplate.query(sql.toString(), new  TellInfoRowMapper());

      return tellinfos;

   }

四:使用?占位符的参数进行查询

 

   @SuppressWarnings("unchecked")

   public List queryPersion(Map param) throws Exception {

      final String ssNumber = (String)param.get("ssNumber");

      final String name = (String)param.get("name");

      final Date birthday = (Date)param.get("birthday");

      final String gender =  (String)param.get("gender");

      StringBuffer sql = new StringBuffer();

       sql.append("  SELECT                              ")   

      .append("  custinfo.custid AS SAMEONE              ")

      .append("  FROM                                 ")

      .append("  (                                    ")

      .append(" SELECT                            ")

      .append("    (                              ")   

      .append("       NVL2(CUST_ID, CUST_ID, 'N')  ")      

      .append("    ) custid                       ")

      .append(" FROM                              ")

      .append(" tbbrp_person                      ")

      .append(" WHERE                             ")

      .append(" (                                 ")

      .append("   SSNUMBER = ?        ")

      .append("    AND cust_name = ?           ")

      .append("    AND to_char(birthday, 'yyyy/mm/dd') = ?  ")

      .append(" )                                             "

      .append(" OR (                                          ")     

      .append("    SSNUMBER = ?                  ")  

      .append("    AND cust_name = ?                          ")

      .append("    AND GENDER = ?                             "

      .append("   )                                           "

      .append(" OR (                                          "

      .append("   SSNUMBER = ?                  "

      .append("    AND to_char(birthday, 'yyyy/mm/dd') = ?  ")

      .append("    AND GENDER = ?                             "

      .append("   )                                           "

      .append(" OR (                                          "

      .append("    cust_name = ?                              "

      .append("    AND to_char(birthday, 'yyyy/mm/dd') = ?  ")

      .append("    AND GENDER = ?                             "

      .append(" )                                             ")     

      .append(" ) custinfo                                                   ")

      .append(" WHERE                                            ")

      .append(" custid <> 'N'                                                ")

      .append(" AND EXISTS (                                                 "

      .append(" SELECT                                           "

      .append(" 1                                             ")

      .append(" FROM                                                         ")

      .append(" tbbrp_policy p,                                           ")

      .append(" tbbrp_policy_others po                           "

      .append(" WHERE                                                        ")

      .append(" p.insured_id = custinfo.custid                      ")

      .append(" AND p.oid = po.policy_oid                                 ")

      .append(" AND (                                                     ")

      .append(" P.INSURE_STAT = 'OK'                             "

      .append(" OR p.insure_stat LIKE '%FF%'                              ")

      .append(" OR po.term_order_status IN ('WFC', 'WFP')            ")

      .append(" )                                                          ")

      .append(" ) order by SAMEONE desc                                                            ");

       Object[] objs = new Object[]{

             ssNumber,name, DateUtil.getStringFromDate(birthday, "yyyy/MM/dd"),   

             ssNumber,name,gender,

             ssNumber,DateUtil.getStringFromDate(birthday, "yyyy/MM/dd"),gender,

             name, DateUtil.getStringFromDate(birthday, "yyyy/MM/dd"),gender

       };

       int[] argTypes = new int[]{Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,

                            Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR

       };

      

       List list = jdbcTemplate.queryForList(sql.toString(), objs, argTypes);

 

      return list;

   }

 

知识点:一共有多少个?号就在objs 集合里一次对应每个问号取值argTypes 对应取值的类型。

 

 

JdbcTemplate 的插入举例说明

一:批量插入数据

private static final String TELLINFO_SQL="INSERT INTO tbbrp_tellinfo ("

         + "OID,"

         + "INSURER_SERIAL_NO,"

         + "TELL_CODE,"

         + "TELL_RESULT,"

         + "TELL_REMARK,"

         + "TELL_PERSON )"

         + "VALUES"

         + "(?,?,?,?,?,?) ";

   public void saveTellInfo(final List<TellInfo> tellInfos){

      jdbcTemplate.batchUpdate(TELLINFO_SQL,new   BatchPreparedStatementSetter() {

        

         @Override

public void setValues(PreparedStatement ps, int i) throws SQLException {

         TellInfo tellInfo=tellInfos.get(i);

         int index=0;

         ps.setString(++index, tellInfo.getOid());

         ps.setString(++index, tellInfo.getInsurer_serial_no());

         ps.setString(++index, tellInfo.getTell_code());

         ps.setString(++index, tellInfo.getTell_result());

         ps.setString(++index, tellInfo.getTell_remark());

         ps.setString(++index, tellInfo.getTell_person());

         }

 

知识点:批量插入,所以?于index的数量相等

 

 

 

 

 

 

 

JdbcTemplate 的更新举例说明

 

   private static final String PERSON_UPDATE_SQL = "update tbbrp_person set\n" +

         "  cust_id=?,\n" +

         "  cust_name=?,\n" +

         "  nationality=?,\n" +

         "  residence=?,\n" +

         "  gender=?,\n" +

         "  id_type=?,\n" +

         "  ssnumber=?,\n" +

         "  birthday=?,\n" +

         "  work_tel=?,\n" +

         "  home_tel=?,\n" +

         "  mobile_tel=?,\n" +

         "  email=?,\n" +

         "  company=?,\n" +

         "  caste=?,\n" +

         "  mail_address=?,\n" +

         "  mail_zip=?,\n" +

         "  living_address=?,\n" +

         "  living_zip=?,\n" +

         "  height=?,\n" +

         "  weight=?,\n" +

         "  cust_stat=?,\n" +

         "  province_code=?,\n" +

         "  city_code=?,\n" +

         "  district_code=?,\n" +

         "  bnft_insure_rela=?,\n" +

         "  bnft_sequence=?,\n" +

         "  bnft_percentage=?,\n" +

         "  bnft_insurer_serial_no=?,\n" +

         "  mail_province_code=?,\n" +

         "  mail_city_code=?,\n" +

         "  mail_district_code=?,\n" +

         "  offic_province_code=?,\n" +

         "  offic_city_code=?,\n" +

         "  offic_district_code=?,\n" +

         "  offic_address=?,\n" +

         "  offic_zip=?,\n" +

         "  bnft_insure_rela_bank=?,\n" +

         "  bnft_type=?,\n" +

         "  caste_name=?,\n" +

         "  cust_id_in_ff=?,\n" +

         "  salary=?,\n" +

         "  rsdnt_type=?,\n" +

         "  company_type=?,\n" +

         "  marital_status=?,\n" +

         "  id_expiry_dt= to_date(?,'YYYY-MM-DD HH24:MI:SS'),\n" +

         "  work_tel_areacode=?,\n" +

         "  home_tel_areacode=?,\n" +

         "  smoke_years=?,\n" +

         "  day_smoking=?,\n" +

         "  quit_smoke_rsn=?,\n" +

         "  quit_smoke_date=?,\n" +

         "  alcohol_years=?,\n" +

         "  day_alcohol=?,\n" +

         "  alcohol_type=?,\n" +

         "  quit_alcohol_rsn=?,\n" +

         "  quit_alcohol_date=?,\n" +

         "  born_height=?,\n" +

         "  born_weight=?,\n" +

         "  birth_hod=?,\n" +

         "  born_remark=?,\n" +

         "  pregnant_weeks=?,\n" +

         "  medical_remark=?,\n" +

         "  national_code=?,\n" +

         "  mail_national_code=?,\n" +

         "  offic_national_code=?\n" +

         "WHERE oid=?";

 

public void updatePerson(final List<TbbrpPerson> personList) {

      jdbcTemplate.batchUpdate(PERSON_UPDATE_SQL, new BatchPreparedStatementSetter(){

         @Override

         public int getBatchSize() {

            return personList.size();

         }

 

         @Override

         public void setValues(PreparedStatement ps, int i)   throws SQLException {

            TbbrpPerson person = personList.get(i);

            int index = 0;

            ps.setString(++index, person.getCustId());

            ps.setString(++index, person.getCustName());

            ps.setString(++index, person.getNationality());

            ps.setString(++index, person.getResidence());

            ps.setString(++index, person.getGender());

            ps.setString(++index, person.getIdType());

            ps.setString(++index, person.getSsnumber());

            ps.setDate(++index, new java.sql.Date(person.getBirthday().getTime()));

            ps.setString(++index, person.getWorkTel());

            ps.setString(++index, person.getHomeTel());

            ps.setString(++index, person.getMobileTel());

            ps.setString(++index, person.getEmail());

            ps.setString(++index, person.getCompany());

            ps.setString(++index, person.getCaste());

            ps.setString(++index, person.getMailAddress());

            ps.setString(++index, person.getMailZip());

            ps.setString(++index, person.getLivingAddress());

            ps.setString(++index, person.getLivingZip());

            ps.setBigDecimal(++index, person.getHeight());

            ps.setBigDecimal(++index, person.getWeight());

            ps.setString(++index, person.getCustStat());

            ps.setString(++index, person.getProvinceCode());

            ps.setString(++index, person.getCityCode());

            ps.setString(++index, person.getDistrictCode());

            ps.setString(++index, person.getBnftInsureRela());

            ps.setString(++index, person.getBnftSequence());

            ps.setString(++index, person.getBnftPercentage());

            ps.setString(++index,  person.getBnftInsurerSerialNo());

            ps.setString(++index, person.getMailProvinceCode());

            ps.setString(++index, person.getMailCityCode());

            ps.setString(++index, person.getMailDistrictCode());

            ps.setString(++index, person.getOfficProvinceCode());

            ps.setString(++index, person.getOfficCityCode());

            ps.setString(++index, person.getOfficDistrictCode());

            ps.setString(++index, person.getOfficAddress());

            ps.setString(++index, person.getOfficZip());

            ps.setString(++index, person.getBnftInsureRelaBank());

            ps.setString(++index, person.getBnftType());

            ps.setString(++index, person.getCasteName());

            ps.setString(++index, person.getCustId());//cust_id_in_ff

            ps.setString(++index, person.getSalary());

            ps.setString(++index, person.getRsdntType());

            ps.setString(++index, person.getCompanyType());

            ps.setString(++index, person.getMaritalStatus());

            ps.setString(++index, person.getIdExpiryDt() == null ? null : new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(person.getIdExpiryDt()));

            ps.setString(++index, person.getWorkTelAreaCode());

            ps.setString(++index, person.getHomeTelAreaCode());

            ps.setString(++index, person.getSmokeYears());

            ps.setString(++index, person.getDaySmoking());

            ps.setString(++index, person.getQuitSmokeRsn());

            ps.setString(++index, person.getQuitSmokeDate());

            ps.setString(++index, person.getAlcoholYears());

            ps.setString(++index, person.getDayAlcohol());

            ps.setString(++index, person.getAlcoholType());

            ps.setString(++index, person.getQuitAlcoholRsn());

            ps.setString(++index, person.getQuitAlcoholDate());

            ps.setBigDecimal(++index, person.getBornHeight());

            ps.setBigDecimal(++index, person.getBornWeight());

            ps.setString(++index, person.getBirthHOD());

            ps.setString(++index, person.getBornRemark());

            ps.setString(++index, person.getPregnantWeeks());

            ps.setString(++index, person.getMedicalRemark());

            ps.setString(++index, person.getNationalCode());

            ps.setString(++index, person.getMailNationalCode());

            ps.setString(++index, person.getOfficNationalCode());

            ps.setString(++index,  person.getOid());

         }

        

      });

   }

 

 

 

 

JdbcTemplate 调用存储过程举例说明

   public Map<String, Object> savePipInfo(Map param) {

      Map<String, Object> result = new HashMap<String, Object>();

      final String policyNumber = (String) param.get("policyNumber");

      final String brp = (String) param.get("brp");

      final String pipType = (String) param.get("pipType");

      jdbcTemplate.execute(new CallableStatementCreator() {

      public CallableStatement createCallableStatement(Connection con) throws SQLException {

      String storedProc = "{call pkg_brp_public.p_write_pip_info(?,?,?,?)}";//

      // 调用的sql

      CallableStatement cs = con.prepareCall(storedProc);

      cs.setString(1, policyNumber);

      cs.setString(2, brp);

      cs.setString(3, pipType);

      cs.setString(4, null);

      return cs;

         }

      },

new CallableStatementCallback() {

public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {

   cs.execute();

   return "";

         }

      });

 

 

entityManager  查询举例

一:查出返回一个集合的数据 query.getResultList();

Query query = entityManager.createNativeQuery(strsql.toString());

         logger.info("checkribao begin toString:查询日报发布时效");

         query.setParameter("dateTime", date + "%");

         query.setParameter("begin", page.getBegin());

         query.setParameter("end", page.getEnd());

         List<Object[]> list = query.getResultList();

 

二:返回一个值的查询方法 query.getSingleResult();

StringBuffer strsql = new StringBuffer();

      strsql.append(" select  ");

      strsql.append(" substr(max( t.data_date),0,4) as maxyeardate  ");

      strsql.append(" from TB_DIT_RULES t ");

      strsql.append("    where t.rs_code in ('A42',      'A23',  'A30',  'A13',   'A28',   'A25',   'A33',   'A38',    'A34',   'A32',   'A26',  'A41') ");

      strsql.append("    and t.issue_frequency not like 'RB' ");

      strsql.append("    and t.sys_type = '1' ");

      Query query = entityManager.createNativeQuery(strsql.toString());

      Object maxYearString = query.getSingleResult();

      return (String) maxYearString;

entityManager  插入数据

String savesqlStr="insert into daybaojytargstateresult(rbdate,smscode,appname,state,messages)" +

      "values(:rbdate,:smscode,:appname,:state,:messages)";

      try {

      Query query=entityManager.createNativeQuery(savesqlStr.toString());

      query.setParameter("rbdate", date);

      query.setParameter("smscode", map.get("smscode"));

      query.setParameter("appname", map.get("appname"));

      query.setParameter("state", map.get("state"));

      query.setParameter("messages", strmess);

      int index=query.executeUpdate();

 

entityManager  修改数据

updasql.append("  update app_column_info t  set t.subname=:subname ,t.subsort=:subsort ,t.editstate=:editstate ,t.username=:username where t.appcode=:appcode and t.subcode=:subcode ");

          Query query=entityManager.createNativeQuery(updasql.toString());

        

          query.setParameter("subname", mapparam.get("subname"));

          query.setParameter("subsort", mapparam.get("subsort"));

          query.setParameter("editstate", mapparam.get("editstate"));

          query.setParameter("username", mapparam.get("username"));

          query.setParameter("appcode",appCode);

          query.setParameter("subcode", mapparam.get("subcode"));

          query.setParameter("subcode", mapparam.get("subcode"));

          int sum=query.executeUpdate();

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

entityManager 用$符号占位拼接sql数据

String strsqls = " select t.NAME_EN,t.NAME_ZH,t.DESCRIPTION,t.editable,to_char(t.CREATE_DATE,'yyyy-mm-dd hh24:mi:ss'),to_char(t.update_date,'yyyy-mm-dd hh24:mi:ss') from  bas_group t where  $NAMEZH$   $COMCODE$";

      try {

      // 获取当前登录用户  获取用户的comcode

      LoginUserDetails userDetails = LoginUserUtil.getLoginUser();

       User user = userService.doFindById(userDetails.getUserId());

         Map<String, Object> params=queryCriteria.getQueryCondition();

         String namezhStr=(String) params.get("nameZh");

         if (StringUtils.isNotEmpty(namezhStr)) {

            strsqls = strsqls.replace("$NAMEZH$",

                   "t.name_zh like :namezh and ");

            strsqls = strsqls.replace("$COMCODE$",

            " t.comcode=:comcode ");

         } else {

            strsqls = strsqls.replace("$NAMEZH$", "");

            strsqls = strsqls.replace("$COMCODE$",

            " t.comcode=:comcode ");

         }

         Query query=em.createNativeQuery(strsqls);

         if(StringUtils.isNotEmpty(namezhStr)){

            query.setParameter("namezh",namezhStr );

         }

         if(StringUtils.isNotEmpty(user.getComCode())){

            query.setParameter("comcode",user.getComCode() );

         }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值