zoukankan      html  css  js  c++  java
  • JAVA框架 Mybaits 输入和输出映射

    一、输入映射

    当前端传来的参数,比较复杂,比如说用户名称、订单单号、账号信息等等。后端有可能有多个projo类对应这些信息。我们需要把这些的projo类封装成一个类似一个vo类。

    通过设置字段形式关联我们的多个projo类。这样在查询的时候会好些。这种方式叫做输入映射。

    mapper配置文件:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <mapper namespace="jd.com.vo.vointer" >
     6     <select id="findAccountById" parameterType="jd.com.vo.vo" resultType="jd.com.mybaitstest.account">
     7         SELECT * FROM t_account WHERE id=#{ac.id}
     8     </select>
     9 
    10 
    11     <insert id="inAccount" parameterType="jd.com.vo.vo" >
    12     <selectKey order="AFTER" resultType="int" keyProperty="id" >
    13         SELECT LAST_INSERT_ID();
    14     </selectKey>
    15         INSERT INTO t_account (NAME,money ) VALUES (#{ac.name},#{ac.money})
    16     </insert>
    17 </mapper>

    动态代理接口:

    1 package jd.com.vo;
    2 import jd.com.mybaitstest.account;
    3 public interface vointer {
    4      account  findAccountById(int id);
    5      void  inAccount(vo vc);
    6 } 

    vo类:

     1 package jd.com.vo;
     2 import  jd.com.mybaitstest.account;
     3 public class vo {
     4     private account ac;
     5     private int id;
     6 
     7     public void setId(int id) {
     8         this.id = id;
     9     }
    10 
    11     public int getId() {
    12         return id;
    13     }
    14 
    15     public void setAc(account ac) {
    16         this.ac = ac;
    17     }
    18 
    19     public account getAc() {
    20         return ac;
    21     }
    22 } 

    测试代码:

     1 package jd.com.vo;
     2 
     3 import org.apache.ibatis.io.Resources;
     4 import org.apache.ibatis.session.SqlSession;
     5 import org.apache.ibatis.session.SqlSessionFactory;
     6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     7 import org.junit.jupiter.api.Test;
     8 
     9 import java.io.IOException;
    10 import java.io.InputStream;
    11 
    12 import jd.com.mybaitstest.account;
    13 
    14 public class testDemo {
    15     @Test
    16     public  void  testdemo1() throws IOException {
    17         String resource="SqlMapConfig.xml";
    18         InputStream inp = Resources.getResourceAsStream(resource);
    19         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inp);
    20         SqlSession sqlSession=sqlSessionFactory.openSession();
    21         vointer vc=sqlSession.getMapper(vointer.class);
    22         vo vo1=new vo();
    23         //查询
    24         account ac=vc.findAccountById(4);
    25         System.out.println("ac = " + ac);
    26         //插入
    27         account nac=new account();
    28         vo1.setAc(nac);
    29         nac.setMoney(12);
    30         nac.setName("kook");
    31         System.out.println(nac.getMoney()+ac.getName());
    32         vc.inAccount(vo1);
    33         sqlSession.commit();
    34         System.out.println("acz. = " + vo1.getId());
    35 
    36     }
    37 }

    总结:1)mapper接口和vo类只有参数的关联。

       2)如果vo类涉及到多个projo类的话,只需要在vo类中设置字段即可。private account ac; 提供get和set方法。

       3)接口的名称和mapper配置文件名字要保持一致。

       4)不要忘记把mapper配置文件在主配置文件:SqlMapConfig.xml注册。

    二、输出映射:

    1)输出简单类型:

    比如说整形:

    继续上面的mapper文件:

    添加如下:

    1     <select id="findAccountCount" resultType="int">
    2         SELECT COUNT(*) FROM t_account;
    3     </select>

     接口添加方法:

    1 Integer findAccountCount();

    测试代码:

    1        Integer countNum=vc.findAccountCount();
    2         System.out.println(countNum);

    简单类型必须是输出的语句是一个,也就是类似selelctone形式。才可能有简单类型输出。

    2)projo类

    看上面代码。

    3)list的projo类。

    通过方法selelctlist形式查询是列表。

  • 相关阅读:
    Android入门第六篇之ListView
    谷歌Volley网络框架讲解——第一篇
    Android网络通信库Volley简介
    Android网络通信框架Volley的学习笔记
    SharedPreferences介绍
    Android之Adapter用法总结
    ANDROID SQLITEOPENHELPER详解
    RxJava、RxBus学习
    【原创】【Andriod】自定义多行多列视图
    [转]android笔记--Intent和IntentFilter详解
  • 原文地址:https://www.cnblogs.com/evilliu/p/8945563.html
Copyright © 2011-2022 走看看