一、输入映射

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

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

mapper配置文件:

 <?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="jd.com.vo.vointer" >
<select id="findAccountById" parameterType="jd.com.vo.vo" resultType="jd.com.mybaitstest.account">
SELECT * FROM t_account WHERE id=#{ac.id}
</select> <insert id="inAccount" parameterType="jd.com.vo.vo" >
<selectKey order="AFTER" resultType="int" keyProperty="id" >
SELECT LAST_INSERT_ID();
</selectKey>
INSERT INTO t_account (NAME,money ) VALUES (#{ac.name},#{ac.money})
</insert>
</mapper>

动态代理接口:

 package jd.com.vo;
import jd.com.mybaitstest.account;
public interface vointer {
account findAccountById(int id);
void inAccount(vo vc);
}

vo类:

 package jd.com.vo;
import jd.com.mybaitstest.account;
public class vo {
private account ac;
private int id; public void setId(int id) {
this.id = id;
} public int getId() {
return id;
} public void setAc(account ac) {
this.ac = ac;
} public account getAc() {
return ac;
}
}

测试代码:

 package jd.com.vo;

 import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test; import java.io.IOException;
import java.io.InputStream; import jd.com.mybaitstest.account; public class testDemo {
@Test
public void testdemo1() throws IOException {
String resource="SqlMapConfig.xml";
InputStream inp = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inp);
SqlSession sqlSession=sqlSessionFactory.openSession();
vointer vc=sqlSession.getMapper(vointer.class);
vo vo1=new vo();
//查询
account ac=vc.findAccountById();
System.out.println("ac = " + ac);
//插入
account nac=new account();
vo1.setAc(nac);
nac.setMoney();
nac.setName("kook");
System.out.println(nac.getMoney()+ac.getName());
vc.inAccount(vo1);
sqlSession.commit();
System.out.println("acz. = " + vo1.getId()); }
}

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

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

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

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

二、输出映射:

1)输出简单类型:

比如说整形:

继续上面的mapper文件:

添加如下:

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

 接口添加方法:

 Integer findAccountCount();

测试代码:

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

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

2)projo类

看上面代码。

3)list的projo类。

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

JAVA框架 Mybaits 输入和输出映射的更多相关文章

  1. (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql

    http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...

  2. 【Mybatis架构】输入、输出映射

    前言综述:   其实在我们分析Mybatis的查询缓存或者是一些简介的时候,我们就不难看到有关于Mybatis输入输出映射的东西,比如说: 但是一直没有想起来系统的来总结一下这方面的相关知识,偶然看到 ...

  3. JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程

    1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...

  4. mybatis 输入、输出映射

    一.输入映射 mapper.xml的参数只有一个.可以传参数,基本简单类型,hashmap和javabean (一).Javabean的方法. 需求:通过小说名和作者模糊找书. 1.定义Javabea ...

  5. mybatis学习记录四——输入、输出映射

    6      输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 6.1.1     需求 完成用户信息的综合查询,需要传入查询条件很 ...

  6. 【JAVA - SSM】之MyBatis输出映射

    MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...

  7. java框架之SpringBoot(4)-资源映射&thymeleaf

    资源映射 静态资源映射 查看 SpringMVC 的自动配置类,里面有一个配置静态资源映射的方法: @Override public void addResourceHandlers(Resource ...

  8. JAVA框架 Mybaits 核心配置

    一:mybaits的核心配置文件:SqlMapConfig.xml 配置文件中需要关注的属性: 二.properites属性:一般引用配置文件(properites文件)比如:数据库的配置.我们可以编 ...

  9. JAVA框架 Mybaits

     注意:我们在resultType中,对于selectlist方法也是projo类.resultType参数的含义是list的泛型的类型. 一:jar包下载: https://github.com/m ...

随机推荐

  1. VM虚拟机克隆_修改网络

    1.如果网络中没有VMware的网卡,记得重置即可 2.如果右上角没有了网络图标,直接 server NetworkManager restart 3.网络配置 1)在/etc/sysconfig/n ...

  2. mysql建表以及列属性

    一.整型( int, tinyint, smallint 等 ) ------------------------------------------------------------------- ...

  3. BZOJ4806(SummerTrainingDay03-K dp)

    炮 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 464  Solved: 243[Submit][Status][Discuss] Descript ...

  4. python学习之老男孩python全栈第九期_day007知识点总结

    基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对 ...

  5. OSGI企业应用开发(十二)OSGI Web应用开发(一)

    前面文章中介绍了如何在OSGI应用中整合Spring和Mybatis框架,本篇文章开始介绍如何使用OSGI技术开发Web应用.对于传统的Java EE应用,应用中涉及到的Web元素无非就是Servle ...

  6. [转]SQL SERVER 2008 登陆失败(SQL和windows都没有对应的权限)

    转自:http://www.cnblogs.com/zerocc/p/3425431.html 昨天在测试一些权限今天早上来就发现SQL SERVER 登陆不上去,报错为: 用户登陆失败:消息 184 ...

  7. 网站与phpwind用户同步的方法

    搭建了一个个人网站,希望使用phpwind来完成论坛功能.但很快就发现存在用户同步的问题,我的网站已经有了用户管理功能, phpwind论坛也有.因此用户同步注册,登陆和注销是必须要实现的. 网上说可 ...

  8. Oracle EBS OPM release step

    --release_step生产批 --created by jenrry SET serveroutput on DECLARE x_return_status VARCHAR2 (1); l_ex ...

  9. Oracle EBS OM 删除订单行

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  10. Sqlserver数据库中,跨权限执行语句

    问题来源:最近有同事需要执行批量删除语句.根据他提供的业务需求,推荐他使用“TRUNCATE TABLE”语句.但使用该语句需要 ALTER权限,这与执行用户的角色不符. 解决办法:使用EXECUTE ...