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 }
扫描二维码关注公众号,回复: 65021 查看本文章

猜你喜欢

转载自www.cnblogs.com/evilliu/p/8945563.html