6、SpringBoot+Mybatis整合------参数传递
开发工具:STS
代码下载链接:https://github.com/theIndoorTrain/SpringBoot_Mybatis/tree/7892801d804d2060774f3720f82e776ff318e3ba
前言:
在调用mybatis的查询条件时,之前,遇到需要验证多个参数的查询时,往往需要把所有参数都绑定到一个实体中去,然后调用获取。
现在,我们来详细描述mybatis传递参数的细节。
一、单个参数:
1.定义mapper接口:
package com.xm.mapper; import java.util.List; import com.xm.pojo.Student; public interface StudentMapper { /**
* 根据name查询
* @param name
* @return
*/
public Student getByName(String name); }
StudentMapper.java
2.实现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="com.xm.mapper.StudentMapper"> <!-- 根据name查询 -->
<select id="getByName" resultType="student">
select * from student where name=#{name}
</select>
</mapper>
StudentMapper.xml
3.定义测试用例:
package com.xm; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import com.xm.mapper.StudentMapper;
import com.xm.pojo.Student; @RunWith(SpringRunner.class)
@SpringBootTest
public class StudentTest {
@Autowired
private StudentMapper studentMapper; @Test
public void selectStudent() { Student student = studentMapper.getByName("郭小明");
System.out.println(student); } }
StudentTest.java
4.测试结果:
(1)数据库查询结果:
(2)测试结果输出:
注意在mapper映射中,单个参数类型,也可以不写 parameterType="",参数名可以随意写,比如#{names}
实现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="com.xm.mapper.StudentMapper"> <!-- 根据name查询 -->
<select id="getByName" resultType="student">
<!-- select * from student where name=#{name} -->
select * from student where name=#{names}
</select>
</mapper>
StudentMapper.xml
二、多个参数
1.根据参数名查询
(1)定义mapper接口:
package com.xm.mapper; import java.util.List; import com.xm.pojo.Student; public interface StudentMapper { /**
* 根据用户名和id同时查询
* @param id
* @param name
* @return
*/
public Student getStudentByIdAndName(Integer id,String name); }
StudentMapper.java
(2)实现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="com.xm.mapper.StudentMapper"> <!-- 根据用户名和id同时查询 -->
<select id="getStudentByIdAndName" resultType="student">
select * from student where name=#{name} and id=#{id}
</select>
</mapper>
StudentMapper.xml
(3)定义测试用例:
package com.xm; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import com.xm.mapper.StudentMapper;
import com.xm.pojo.Student; @RunWith(SpringRunner.class)
@SpringBootTest
public class StudentTest {
@Autowired
private StudentMapper studentMapper; @Test
public void selectStudent() { /*Student student = studentMapper.getByName("郭小明");*/
Student student = studentMapper.getStudentByIdAndName(1, "郭小明");
System.out.println(student); } }
StudentTest.java
(4)测试结果:
说明:这种简单的根据参数名传参是失败的
2.根据参数key值获取,获取规则为param1,param2,param3.........:
(1)实现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="com.xm.mapper.StudentMapper"> <!-- 根据用户名和id同时查询 -->
<select id="getStudentByIdAndName" resultType="student">
<!-- select * from student where name=#{name} and id=#{id} -->
select * from student where name=#{param2} and id=#{param1}
</select>
</mapper>
StudentMapper.xml
(2)测试结果:
说明:针对这种情况,如果参数较多的情况下,获取准确的参数名更好一些
3.绑定参数名
(1)定义mapper接口:
package com.xm.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.xm.pojo.Student; public interface StudentMapper { /**
* 根据用户名和id同时查询
* @param id
* @param name
* @return
*/
public Student getStudentByIdAndName(@Param("id")Integer id,@Param("name")String name); }
StudentMapper.java
(2)实现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="com.xm.mapper.StudentMapper"> <!-- 根据用户名和id同时查询 -->
<select id="getStudentByIdAndName" resultType="student">
select * from student where name=#{name} and id=#{id}
<!-- select * from student where name=#{param2} and id=#{param1} -->
</select>
</mapper>
StudentMapper.xml
(3)测试结果:
说明:针对参数较多,且参数都属于同一个pojo类的时候,可以把参数先封装入实体,再获取
4.封装实体参数:
(1)定义mapper接口:
package com.xm.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.xm.pojo.Student; public interface StudentMapper { /**
* 根据用户名和id同时查询
* @param id
* @param name
* @return
*/
public Student getStudentByIdAndName(Student student); }
StudentMapper.java
(2)定义测试用例:
package com.xm; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import com.xm.mapper.StudentMapper;
import com.xm.pojo.Student; @RunWith(SpringRunner.class)
@SpringBootTest
public class StudentTest {
@Autowired
private StudentMapper studentMapper; @Test
public void selectStudent() { /*Student student = studentMapper.getByName("郭小明");*/
/*Student student = studentMapper.getStudentByIdAndName(1, "郭小明");*/
Student student = new Student();
student.setName("郭小明");
student.setId(1);
Student student2 = studentMapper.getStudentByIdAndName(student);
System.out.println(student2); } }
StudentMapper.java
(3)测试结果:
2018-07-02
6、SpringBoot+Mybatis整合------参数传递的更多相关文章
- SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)
SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版) ================================ ©Copyright 蕃薯耀 2 ...
- SpringBoot+Mybatis整合入门(一)
SpringBoot+Mybatis 四步整合 第一步 添加依赖 springBoot+Mybatis相关依赖 <!--springBoot相关--> <parent> < ...
- springboot/Mybatis整合
正题 本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: 1.5.6 jdk:1.8.0_161 maven:3.3.9 额外功能 PageHelper ...
- SpringBoot+Mybatis整合实例
前言 大家都知道springboot有几大特点:能创建独立的Spring应用程序:能嵌入Tomcat,无需部署WAR文件:简化Maven配置:自动配置Spring等等.这里整合mybatis,创建一个 ...
- 2、SpringBoot+Mybatis整合------一对一
开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/SpringBoot_Mybatis01/tree/93398da60c647573645917b2 ...
- springboot+mybatis整合(单元测试,异常处理,日志管理,AOP)
我用的事IDEA,jdk版本是1.7.新建项目的时候这个地方的选择需要注意一下,springboot版本是1.5的,否则不支持1.7的jdk pom.xml <dependency> &l ...
- 9、SpringBoot+Mybatis整合------动态sql
开发工具:STS 前言: mybatis框架中最具特色的便是sql语句中的自定义,而动态sql的使用又使整个框架更加灵活. 动态sql中的语法: where标签 if标签 trim标签 set标签 s ...
- 1、SpringBoot+Mybatis整合------简单CRUD的实现
编译工具:STS 代码下载链接:https://github.com/theIndoorTrain/SpringBoot_Mybatis01/commit/b757cd9bfa4e2de551b2e9 ...
- springboot mybatis 整合
新建项目在上一篇. 第二步:创建表和相应的实体类 实体类:user.java package com.qtt.im.entity; import java.io.Serializable; publi ...
随机推荐
- 性能测试工具LoadRunner20-LR之Controller Service-Level Agreement(服务水平协议)
SLA是为负载测试场景定义的具体目标.例如,评测脚本中任意数量事务的平均响应时间,可以定义具体的目标或阈值.测试运行结束之后,LR将你定义的目标与实际录制的平均事务响应时间进行比较.如果实际的平均事务 ...
- javascript基础语法备忘录-变量和数据类型
//javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...
- pat1091. Acute Stroke (30)
1091. Acute Stroke (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One impo ...
- 新浪微博OAuth2授权错误 error:redirect_uri_mismatch
最近想在app进行新浪微博认证,结果发现总是报error:redirect_uri_mismatch错误. 网上搜了解决方法. 进入 http://open.weibo.com/apps/app_ke ...
- JQuery 技巧总结
一.简介 1.1.概述 随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.mootools.Bindows ...
- Xtrareport二之固定数据绑定
已经了解了XtraReport的初步用法,现在在进一步了解数据绑定 我们还是先不整高深的,先来个写死的,让我们的数据库可以通过报表呈现先 1. 准备 还在上节基础上,选中设计器report的page ...
- 如何快速定位JVM中消耗CPU最多的线程?
第一步.先找出Java的进程PID ps -ef | grep 进程名关键字 这里假设找到的PID是:12345 第二步.找出该进程内最消耗CPU的线程 top -Hp log4x R :11.7 ...
- hystrix应用介绍(二)
上篇博客中讲了hystrix在公司中的一些应用场景,由于保密的原因没办法贴出优化的代码,这里专门写一篇hystrix代码的demo,供大家在使用的过程中快速上手 Hystrix有两个请求命令 Hyst ...
- maven课程 项目管理利器-maven 3-7 maven依赖范围 2星
本节主要讲了maven的依赖范围: 在pom.xml dependency标签的scope中.eclipse中有编译的路径,maven中有编译,运行,测试的路径. 1 scope为test,为测试 ...
- Windows之CMD查看系统信息
Windows 系统通过命令行(CMD)查询系统信息有两种方式: 1.图形化界面: 在“运行”中键入CMD,然后输入 dxdiag,回车后弹出图形化界面 ------ DirectX 诊断工具. 2. ...