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` SET
		username = #{name},
		address = #{address},
		birthday = #{birthday} WHERE id = #{id}
	</update>

	<!-- 删除用户 -->
	<delete id="deleteUserById" parameterType="int">
		delete from user where
		id=#{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;

	@Before
	public void init() throws Exception {
		InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		this.sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}
	@Test
	public 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);
		}
	}
	
	@Test
	public 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);
		}
	}

	@Test
	public 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);
		}
	}


}








  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将SSM框架中的MyBatis升级到MyBatis-Plus是可行的,可以实现共存。SSM框架由Spring、Spring MVC和MyBatis组成,而MyBatis-Plus是对MyBatis的增强扩展。下面将介绍如何将它们共存。 首先,需要将MyBatis升级到MyBatis-Plus。可以将MyBatis-Plus的依赖项添加到项目的pom.xml文件中,替换原有的MyBatis依赖。然后,需要对原有的MyBatis配置文件进行修改。MyBatis-Plus提供了一些方便的功能和特性,如自动填充、逻辑删除等,可以根据项目需求选择开启或关闭。 在SSM框架中,MyBatis-Plus可以与原有的Spring框架和Spring MVC框架完美共存。Spring框架负责管理和配置各种Bean,MyBatis-Plus可以与Spring框架一起使用,将其作为DAO层的组件进行管理。在Spring的配置文件中,可以将MyBatis-Plus的配置文件加入到配置中。 在Spring MVC框架中,可以继续使用原有的控制器、服务和视图解析器等组件。MyBatis-Plus可以与Spring MVC框架无缝集成,通过Spring MVC接收请求,然后调用MyBatis-Plus进行数据访问和处理。 在具体开发过程中,可以利用MyBatis-Plus提供的一些特性简化开发工作。例如,可以使用MyBatis-Plus的代码生成器来自动生成DAO、实体类和Mapper等代码,减少手动编写的工作量。 总结来说,将SSM框架中的MyBatis升级到MyBatis-Plus是完全可以实现的,它们可以共存并完美集成。通过使用MyBatis-Plus,我们可以更加便捷地开发和管理数据库操作,提高开发效率和代码质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值