Mybatis学习笔记(5)--parameterType输入类型

2024-06-14 18:32

本文主要是介绍Mybatis学习笔记(5)--parameterType输入类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

parameterType查询条件的输入类型分为简单类型和复杂类型,简单输入类型,如string ,int等,复杂类型如,pojo包装类,数组类型,集合类型,

UserMapper.xml文件

<?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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="com.skiff.www.mapper.UserMapper"><!-- id:statement的id 或者叫做sql的id --><!-- parameterType:声明输入参数的类型 --><!-- resultType:声明输出结果的类型,应该填写pojo的全路径 --><!-- #{}:输入参数的占位符,相当于jdbc的? --><select id="queryUserId" parameterType="int"resultType="com.skiff.www.domain.User">select * from user where id = #{id}</select><!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 --><!-- resultType的配置和返回一个结果的配置一样 --><select id="queryUserByUsername1" parameterType="string"resultType="com.skiff.www.domain.User">SELECT * FROM user WHERE username LIKE #{username}</select><!-- 如果传入的参数是简单数据类型,${}里面必须写value --><select id="queryUserByUsername2" parameterType="string"resultType="com.skiff.www.domain.User">SELECT * FROM `user` WHERE username LIKE '%${value}%'</select><resultMap type="com.skiff.www.domain.User" id="user"><id column="id" property="id"/><result column="username"  property="name" /></resultMap><!-- 如果传入的参数pojo包装的对象 --><select id="queryUserByQueryVo" parameterType="com.skiff.www.domain.vo.QueryVo"resultMap="user">SELECT * FROM `user` WHERE username LIKE '%${user.name}%'</select><!-- foreach标签,进行遍历 -->  <!-- collection:遍历的集合,这里是QueryVo的ids属性 -->  <!-- item:遍历的项目,可以随便写,,但是和后面的#{}里面要一致 -->  <!-- open:在前面添加的sql片段 -->  <!-- close:在结尾处添加的sql片段 -->  <!-- separator:指定遍历的元素之间使用的分隔符 -->  <!-- 如果传入的参数list的集合 --><!-- 执行的sql语句:SELECT * FROM `user` WHERE id in ( ? , ? , ? )  --><select id="queryUserByparameterTypeList" parameterType="java.util.List"resultMap="user">SELECT * FROM `user`<where><!--  idsList是QueryVo的一个属性名,并在QueryVo中有对应的get方法--><foreach collection="idsList" item="item" open="id in ( " close = ")"separator=",">#{item}</foreach></where></select><!-- 如果传入的参数array数组 --><!-- 执行的sql语句:SELECT * FROM user WHERE id in ( ? , ? , ? )   --><select id="queryUserByparameterTypeArray" parameterType="Integer[]"resultMap="user">SELECT * FROM user<where><!--如果查询的参数是array类型,那么collection中的参数应该写成array --><foreach collection="array" item="item" open="id in ( " close = ")"separator=",">#{item}</foreach></where></select><!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 --><!-- 保存用户 --><insert id="saveUser" parameterType="com.skiff.www.domain.User"><!-- selectKey 标签实现主键返回 --><!-- keyColumn:主键对应的表中的哪一列 --><!-- keyProperty:主键对应的pojo中的哪一个属性 --><!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql --><!-- resultType:设置返回的id的类型 --><selectKey keyColumn="id" keyProperty="id" order="AFTER"resultType="int">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO `user`(username,birthday,sex,address) VALUES(#{name},#{birthday},#{sex},#{address})</insert><!-- 更新用户 --><update id="updateUserById" parameterType="com.skiff.www.domain.User">UPDATE `user` SETusername = #{name},address = #{address},birthday = #{birthday} WHERE id = #{id}</update><!-- 删除用户 --><delete id="deleteUserById" parameterType="int">delete from user whereid=#{id}</delete></mapper>


2.QueryVo封装的pojo包装类


/**     * @文件名称: QueryVo.java   * @描述: TODO  * @作者:  一叶扁舟(skiff)* @时间:2018年1月12日 下午3:39:25  * @版本:V1.0     */ 
package com.skiff.www.domain.vo;import java.util.List;import com.skiff.www.domain.User;/**  * @类功能说明:    queryVo中的一个属性是一个实体类* @作者: 一叶扁舟 (skiff)* @创建时间:2018年1月12日 下午3:39:25  * @版本:V1.0  */
public class QueryVo {private User user;private Integer[] idsArray;//数组private List<Integer> idsList;//list集合/*** @return the user*/public User getUser() {return user;}/*** @param user the user to set*/public void setUser(User user) {this.user = user;}/*** @return the idsArray*/public Integer[] getIdsArray() {return idsArray;}/*** @param idsArray the idsArray to set*/public void setIdsArray(Integer[] idsArray) {this.idsArray = idsArray;}/*** @return the idsList*/public List<Integer> getIdsList() {return idsList;}/*** @param idsList the idsList to set*/public void setIdsList(List<Integer> idsList) {this.idsList = idsList;}}


3.junit测试类

/**     * @文件名称: UserMapperTest.java   * @描述: TODO  * @作者:  一叶扁舟(skiff)* @时间:2018年1月9日 下午6:14:34  * @版本:V1.0     */ 
package test.com.skiff.www.testUser;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;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.Before;
import org.junit.Test;import com.skiff.www.domain.User;
import com.skiff.www.domain.vo.QueryVo;
import com.skiff.www.mapper.UserMapper;/**  * @类功能说明:    * @作者: 一叶扁舟 (skiff)* @创建时间:2018年1月12日 下午3:41:07  * @版本:V1.0  */  
public class UserMapperVo {private SqlSessionFactory sqlSessionFactory;@Beforepublic void init() throws Exception {InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");this.sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void parameterType1(){SqlSession session = this.sqlSessionFactory.openSession();UserMapper mapper = session.getMapper(UserMapper.class);QueryVo vo = new QueryVo();User user = new User();user.setName("无悔");vo.setUser(user);List<User> users = mapper.queryUserByQueryVo(vo);//pojo包装对象for (User user2 : users) {System.out.println(user2);}}@Testpublic void parameterType2(){SqlSession session = this.sqlSessionFactory.openSession();UserMapper mapper = session.getMapper(UserMapper.class);QueryVo vo = new QueryVo();List<Integer> ids = new ArrayList<Integer>();ids.add(1);ids.add(24);ids.add(25);vo.setIdsList(ids);List<User> users = mapper.queryUserByparameterTypeList(vo);//list集合for (User user2 : users) {System.out.println(user2);}}@Testpublic void parameterType3(){SqlSession session = this.sqlSessionFactory.openSession();UserMapper mapper = session.getMapper(UserMapper.class);Integer[] ids = new Integer[3];ids[0] = 1;ids[1] = 24;ids[2] = 25;vo.setIdsArray(ids);List<User> users = mapper.queryUserByparameterTypeArray(ids);//数组for (User user2 : users) {System.out.println(user2);}}}








这篇关于Mybatis学习笔记(5)--parameterType输入类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061187

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程