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 ...
随机推荐
- Spring Data Solr —— 快速入门
Solr是基于Lucene(全文检索引擎)开发,它是一个独立系统,运行在Tomcat或Jetty(solr6以上集成了jetty,无需再部署到servlet容器上),但其原生中文的分词词功能不行,需要 ...
- Java高级工程师需要弄明白的20个知识点
一般的程序员或许只需知道一些JAVA的语法结构,能对数据库数据进行CRUD就可以应付了.但要成为JAVA(高级) 工程师,就要对JAVA做比较深入的研究,需要不断学习进步,以下对高级工程师需要突破的知 ...
- HTML自定义标签与标签自定义属性
大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当. 自定义HTML标签 在firefox.chrome这种现代浏览器里,自定义标签很简单,就 ...
- Code Signal_练习题_depositProfit
You have deposited a specific amount of money into your bank account. Each year your balance increas ...
- H5 页面下拉加载更多
1.html页面: <body onload="index_roll()"> ... </body> 2.js <script type=" ...
- 高并发情况下,如何生成分布式全局id
1.使用UUID生成全局id,不占用宽带 2.基于数据库自增或者序列生成全局id,占用宽带,设置自增步长实现集群,但可扩展性差 3.基于redis生成全局id,占用宽度,设置自增步长实现集群,性能比数 ...
- 用eclipse 搭建struts2环境
一,下载struts2对应的jar包,(http://struts.apache.org/download.cgi#struts2514.1),我一般下载struts2.3版本的 二,打开eclips ...
- FileWriter写数据路径问题及关闭和刷新方法的区别
package com.itheima_01; import java.io.FileWriter; import java.io.IOException; /* * 输出流写数据的步骤: * A:创 ...
- Charles 模拟服务器挂掉Rewrite tools
1.点击相应请求 2.选择Rewrite 工具 3. 4. 5.保存 6.接下来就是重新发送请求了
- HTML中meta标签作用及属性总结
在前端开发中编写html静态网页模板时,head标签内总是会带上许多meta标签,大多数时候并不十分了解这些标签的具体作用,只是别人写了我们也写上吧! 今天小编特意查询了一下关于网页中meta标签的作 ...