MyBatis中如何传递多个参数呢?
下文笔者讲述Mybatis中传递多个参数的方法分享,如下所示
Mybatis简介
MyBatis是Java开发中使用最多的ORM框架 使用MyBatis进行开发时 需向方法中传递多个参数 下面将介绍几种MyBatis传递多个参数的方法
Mybatis传递多个参数的实现思路 方式1: 使用顺序法传递参数 方式2: 使用@Param注解传递参数---笔者强烈推荐此方法 方式3: Map传参法 方式4: JavaBean传参法例:
使用Mybatis中 实现使用用户账号和用户密码,获取用户信息 1.在MySQL数据库中创建用户信息表(tb_user) 并添加数据 -- 创建“用户信息”数据表 CREATE TABLE IF NOT EXISTS tb_user ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号', user_account VARCHAR(50) NOT NULL COMMENT '用户账号', user_password VARCHAR(50) NOT NULL COMMENT '用户密码', blog_url VARCHAR(50) NOT NULL COMMENT '博客地址', remark VARCHAR(50) COMMENT '备注' ) COMMENT = '用户信息表'; -- 添加数据 INSERT INTO tb_user(user_account,user_password,blog_url,remark) VALUES('java265的博客','123456','https://www.java265.com','您好,欢迎访问 java265的博客'); 2.创建用户信息持久化类(User.java)。 package com.java265.mybatis.po; /** * 用户信息的持久化类 **/ public class User { private int id; //用户编号 private String userAccount; //用户账号 private String userPassword; //用户密码 private String blogUrl; //博客地址 private String remark; //备注 //省略getter与setter方法... } 3.开启驼峰命名规则 MyBatis驼峰命名规则 需在MyBatis的全局配置文件SqlMapConfig.xml(mybatis-config.xml)中 设置开启驼峰命名规则配置 <!-- 开启自动驼峰命名规则(camel case)映射 --> <setting name="mapUnderscoreToCamelCase" value="true"/>
顺序传参法
创建SQL配置文件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"> <mapper namespace="com.java265.mybatis.mapper.UserMapper"> <!-- 根据用户账号和用户密码,获取用户信息 --> <select id="getUser" resultType="com.java265.mybatis.po.User"> SELECT * FROM tb_user WHERE user_account = #{arg0} AND user_password = #{arg1} </select> </mapper> 注意事项: 1.顺序传递参法使用:#{arg0}、#{arg1}... 作为占位符 数字代表传入参数的顺序。 2.在Mybatis3.4.2或之前的版本中使用:#{0}、#{1}... 作为占位符 在新版本的MyBatis中此方式已经过时 会提示错误:org.apache.ibatis.binding.BindingException: Parameter '0' not found Available parameters are [arg1, arg0, param1, param2]
测试代码
创建用户信息Mapper动态代理接口 package com.java265.mybatis.mapper; import com.java265.mybatis.po.User; /** * 用户信息Mapper动态代理接口 **/ public interface UserMapper { public User getUser(String account,String password); } 编写执行方法。 /** * MyBatis传递多个参数 * */ @Test public void getUser() { DataConnection dataConnection = new DataConnection(); SqlSession sqlSession = dataConnection.getSqlSession(); //获取Mapper代理 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //执行Mapper代理对象的查询方法 User user = userMapper.getUser("java265的博客","123456"); if(user!=null) { System.out.println("用户编号:" + user.getId()); System.out.println("用户账号:" + user.getUserAccount()); System.out.println("用户密码:" + user.getUserPassword()); System.out.println("博客地址:" + user.getBlogUrl()); System.out.println("备注信息:" + user.getRemark()); } sqlSession.close(); }
@Param注解传参法(推荐)
public User getUser(@Param("userAccount") String account,@Param("userPassword") String password); <select id="getUser" resultType="com.java265.mybatis.po.User"> SELECT * FROM tb_user WHERE user_account = #{userAccount} AND user_password = #{userPassword} </select> #{}里面的名称对应的是注解@Param括号里面修饰的名称。
Map传参法
public User getUser(Map<String, Object> params); <select id="getUser" parameterType="java.util.Map" resultType="com.java265.mybatis.po.User"> SELECT * FROM tb_user WHERE user_account = #{userAccount} AND user_password = #{userPassword} </select> //获取Mapper代理 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //查询参数 Map params = new HashMap(); params.put("userAccount","java265的博客"); params.put("userPassword","123456"); //执行Mapper代理对象的查询方法 User user = userMapper.getUser(params); #{}里面的名称对应的是Map里面的key名称。
JavaBean传参法(推荐)
创建用户信息参数类(UserParam.java)。 package com.java265.mybatis.po; /** * 用户信息参数类 * **/ public class UserParam { private String userAccount; //用户账号 private String userPassword; //用户密码 //省略getter与setter方法... } public User getUser(UserParam userParam); <select id="getUser" parameterType="com.java265.mybatis.po.UserParam" resultType="com.java265.mybatis.po.User"> SELECT * FROM tb_user WHERE user_account = #{userAccount} AND user_password = #{userPassword} </select> 调用方法: //获取Mapper代理 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //查询参数 UserParam userParam = new UserParam(); userParam.setUserAccount("java265的博客"); userParam.setUserPassword("123456"); //执行Mapper代理对象的查询方法 User user = userMapper.getUser(userParam); #{}里面的名称对应的是UserParam类里面的成员属性。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。