一、输入映射

当前端传来的参数,比较复杂,比如说用户名称、订单单号、账号信息等等。后端有可能有多个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. Flask 中路由系统

    1. @app.route() 装饰器中的参数 methods : 当前 url 地址,允许访问的请求方式 @app.route("/info", methods=["G ...

  2. JavaScript--事件绑定及深入(26)

    // 事件绑定分为两种: // 一种是传统事件绑定(内联模型/脚本模型);上一章内容; // 一种是现代事件绑定(DOM2级模型);现代事件绑定在传统事件绑定基础上提供了更强大的功能; 一 传统事件绑 ...

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

    # 装饰器的形成的过程:最简单的装饰器:有返回值的:有一个参数的:万能参数# 装饰器的作用# 原则:开放封闭原则# 语法糖# 装饰器的固定模式:# def wrapper(f): # 装饰器函数,f是 ...

  4. Python 调度算法 死锁 静动态链接 分页分段

    1 select poll epoll的区别基本上select有3个缺点: 连接数受限查找配对速度慢数据由内核拷贝到用户态poll改善了第一个缺点 epoll改了三个缺点. (1)select,pol ...

  5. php用smarty来做简易留言系统,明细步骤简单操作

    留言信息是之前用php做过的一个例子,现在把它用smarty模板来做 大概是这样子 点击发布信息 然后填写内容,发送后会返回表格,写的内容都会出现在表格里 数据库的数据是这样的: 先建两个文件.php ...

  6. TreeView失去焦点时亮显选中状态

    Windows Form下设置属性即可. TreeView.HideSelection = false

  7. 【three.js练习程序】创建简单物理地形

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. AOP编程报错Xlint:invalidAbsoluteTypeName

    @Component@Aspectpublic class DingdingAspect { private Logger logger = LoggerFactory.getLogger(this. ...

  9. 留言板0.4_model中的数据库(1)

    1.先在数据库中加入一天测试数据先 2.在model的"views"中载入数据库和model的类 import pymysql from .models import UserMe ...

  10. EFCore中SQLSERVER 2008 的分页问题

    自SQLSERVER 2012起新增了 Offset Fetch 语法,因此EFCore默认是以此语法生成相应的分页语句的. 如果我们的目标数据库低于 2012,那么EFCore默认生成的语句在执行的 ...