JAVA框架 Mybaits 输入和输出映射
一、输入映射
当前端传来的参数,比较复杂,比如说用户名称、订单单号、账号信息等等。后端有可能有多个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 输入和输出映射的更多相关文章
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
- 【Mybatis架构】输入、输出映射
前言综述: 其实在我们分析Mybatis的查询缓存或者是一些简介的时候,我们就不难看到有关于Mybatis输入输出映射的东西,比如说: 但是一直没有想起来系统的来总结一下这方面的相关知识,偶然看到 ...
- JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程
1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...
- mybatis 输入、输出映射
一.输入映射 mapper.xml的参数只有一个.可以传参数,基本简单类型,hashmap和javabean (一).Javabean的方法. 需求:通过小说名和作者模糊找书. 1.定义Javabea ...
- mybatis学习记录四——输入、输出映射
6 输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 6.1.1 需求 完成用户信息的综合查询,需要传入查询条件很 ...
- 【JAVA - SSM】之MyBatis输出映射
MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...
- java框架之SpringBoot(4)-资源映射&thymeleaf
资源映射 静态资源映射 查看 SpringMVC 的自动配置类,里面有一个配置静态资源映射的方法: @Override public void addResourceHandlers(Resource ...
- JAVA框架 Mybaits 核心配置
一:mybaits的核心配置文件:SqlMapConfig.xml 配置文件中需要关注的属性: 二.properites属性:一般引用配置文件(properites文件)比如:数据库的配置.我们可以编 ...
- JAVA框架 Mybaits
注意:我们在resultType中,对于selectlist方法也是projo类.resultType参数的含义是list的泛型的类型. 一:jar包下载: https://github.com/m ...
随机推荐
- Java系统和PHP系统相互调用
一.HTTP JSON方式的缺点 JSON序列化效率低 多语言服务治理功能低 二.关于RPC框架 RPC 框架大致分为两类,一种是偏重服务治理,另一种侧重跨语言调用 2.1 服务治理型 特点 功能丰富 ...
- POJ2778(SummerTrainingDay10-B AC自动机+矩阵快速幂)
DNA Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17160 Accepted: 6616 Des ...
- 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序
利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...
- JPEG/PNG/GIF图片格式简析
JPEG/PNG/GIF是Web浏览器广泛支持的3种图片格式. 1.JPEG格式最适合保存照片和其他复杂图像. 2.GIF和PNG格式最适合保存logo和其他包含单色.线条.文本的简单图形. 3.JP ...
- 【读书笔记】iOS-应用程序剖析
一,Default.png 包含应用程序默认扉页的PNG图像文件.用户运行应用程序时,iPhone会用此图片显示一个动画,产生由小变大来到屏幕前的效果.应用程序的Default.png文件加载后会不断 ...
- 团队项目个人进展——Day08
一.昨天工作总结 冲刺第八天,昨天看了许多关于wx.request的知识,主要测试了OBJECT参数,同时也对https方面有了一定了解 二.遇到的问题 对文档中的内容只是熟悉,理解并运用起来还存在问 ...
- 如何使用 Azure PowerShell 在 Azure Marketplace 中查找 Windows VM 映像
本主题介绍如何使用 Azure PowerShell 在 Azure Marketplace 中查找 VM 映像. 创建 Windows VM 时使用此信息来指定 Marketplace 映像. 确保 ...
- 如何加密 Windows VM 上的虚拟磁盘
为了增强虚拟机 (VM) 的安全性以及符合性,可以加密 Azure 中的虚拟磁盘. 磁盘是使用 Azure 密钥保管库中受保护的加密密钥加密的. 可以控制这些加密密钥,以及审核对它们的使用. 本文详细 ...
- CSS未知宽高元素水平垂直居中
方法一 :table.cell-table 思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中优点:父元素(p ...
- Java高并发编程(四)
一.Executor执行器 1.Executor接口,java线程池框架中的顶层接口,提供一个execute方法来执行任务 import java.util.concurrent.Executor; ...