首页 分享 mybatis学习教程——@Param注解使用

mybatis学习教程——@Param注解使用

来源:花匠小妙招 时间:2024-12-18 09:00

当接口参数比较多的时候,可以使用JavaBean来封装参数,当参数比较少的情况,可以使用Map类型或者使用@Param注解

1.userMapper接口类

package com.aruisi.mybatis.mapper;

import com.aruisi.mybatis.dto.UserDTO;

public interface UserMapper {

public UserDTO selectUserByNameAndSex(String loginName,Integer sex);

}

2.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">

<mapper namespace="com.aruisi.mybatis.mapper.UserMapper">

<select id="selectUserByNameAndSex" resultType="com.aruisi.mybatis.dto.UserDTO">

SELECT id,

login_name AS loginName,

sex,

age,

create_time AS createTime

FROM `user` WHERE login_name=#{loginName} and sex=#{sex}

</select>

</mapper>

3.测试方法

package com.aruisi.mybatis.test;

import java.io.IOException;

import java.io.Reader;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.aruisi.mybatis.dto.UserDTO;

import com.aruisi.mybatis.mapper.UserMapper;

public class TestSelectUserByNameAndSex {

public static void main(String[] args) {

/**

* java 7增强了try语句的功能,圆括号可以声明、初始化一个或多个资源(必须在程序结束时显示关闭的资源)

* try语句在该语句结束时会自动关闭这些资源

*/

try (

//读取配置文件信息

Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");

//参数为true,设置事务是自动提交

SqlSession sqlSession = new SqlSessionFactoryBuilder().build(reader).openSession(true);

){

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

UserDTO user = userMapper.selectUserByNameAndSex("王五", 1);

System.out.println("============="+user.toString());

} catch (IOException e) {

e.printStackTrace();

}

}

}

测试结果会报如下错误:
Parameter 'loginName' not found. Available parameters are [1, 0, param1, param2]
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'loginName' not found. Available parameters are [1, 0, param1, param2]
报这个错误的原因是mybatis默认可用的xml参数只用  [1, 0, param1, param2], 这四个参数都是mybatis根据参数位置自定义的名字,这时将xml中的loginName改为#{0}或者#{param1},将sex改为#{1}或者#{param2},selectUserByNameAndSex这个接口方法就能正常被调用

但是这种写法代码可读性很差,不利于维护,这时可以使用@Param注解
将接口方法给为

public UserDTO selectUserByNameAndSex(@Param("loginName")String loginName,@Param("sex")Integer sex);


总结:
     给参数加上@Param注解后,mybatis会自动将参数封装成map类型,@Param注解的值 @Param("loginName")作为map的key,在xml中就可以使用注解的值来使用参数。当时当只有一个参数时,我们并没有使用注解,code也能运行,这是因为在只有一个参数时,mybatis不关心这个参数叫什么名字就会直接把这个唯一的参数值拿来使用。

相关知识

JDBC与MyBatis:数据库访问技术的变迁【后端 15】
mybatis中多个参数传递的问题
写一个c++能运行出来的玫瑰花代码
用c语言写一个玫瑰花代码
鸿蒙NEXT开发教程:浅谈@ComponentV2装饰器
Java SSM框架构建网上花店销售系统教程
NLP学习之使用pytorch搭建textCNN模型进行中文文本分类
学习C4D如何使用Octane Render渲染器创建植物场景教程
使用集成学习多数投票分类器对鸢尾花进行分类
基于ssm+vue.js的网上花店设计附带文章和源代码设计说明文档ppt

网址: mybatis学习教程——@Param注解使用 https://www.huajiangbk.com/newsview1163530.html

所属分类:花卉
上一篇: torch教程——使用GPU运行
下一篇: 机器学习教程 之 SKlearn

推荐分享