一、输入映射
当前端传来的参数,比较复杂,比如说用户名称、订单单号、账号信息等等。后端有可能有多个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 查看本文章