Mybatis参数传递方式

     在实际的开发中我们会遇到很多的增删改查操作,而这些操作都要涉及到请求参数的传递,下面我们就来简单介绍一下Mybatis中常用的3种参数传递方式

1.单个参数传递

在进行单个参数传递时,我们直接进行传递即可.

首先我们在接口中创建一个抽象方法:

Admin findAdminById(int id);

接下来我们在.xml文件中编写SQL语句:

<?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.ffyc.mybatisdemo.dao.AdminDao">
     <select id="findAdminById" parameterType="int" resultType="Admin">
         select * from admin where id = #{id}
     </select>
 </mapper>

然后我们直接在main方法中调用我们的抽象方法即可:

 package com.ffyc.mybatisdemo.test;
 ​
 import com.ffyc.mybatisdemo.dao.AdminDao;
 import com.ffyc.mybatisdemo.model.Admin;
 import com.ffyc.mybatisdemo.util.MybatisUtil;
 import org.apache.ibatis.session.SqlSession;;
 import java.io.IOException;
 ​
 public class Test1 {
 ​
     public static void main(String[] args) throws IOException {
 ​
 ​
         //创建SqlSession
         SqlSession sqlSession = MybatisUtil.getSqlSession();
        // Admin admin = sqlSession.selectOne("com.ffyc.admin.findAdminById", 1);
 ​
         //动态生成一个代理对象(mybatis框架生成),由代理对象去调用mapper文件中的方法
         AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
         Admin admin = adminDao.findAdminById(1);
         System.out.println(admin);
         sqlSession.close();
     }
 }

这样我们就通过传递单个参数完成了通过id查询Admin对象

2.多个参数传递

在进行多个参数传递时,我们有两种常用方式:

①使用@Param()进行绑定:

格式:

 User selectUsers(@Param(“id”)int id,@Param(“name”)String name);

代码示例:

1.首先,同样的我们需要使用@Param()的方式创建一个抽象接口:

Admin login(@Param("account")String account,@Param("password")String password);

2.接下来在.xml文件中编写SQL语言:

 <mapper namespace="com.ffyc.mybatisdemo.dao.AdminDao">
     <select id="login" resultType="Admin">
         select * from admin where account=#{account} and password=#{password}
     </select>
 </mapper>

3.然后在main方法中调用我们的抽象方法:

 public class Test2 {
 ​
     @Test
     //使用@Param绑定
     public void login() {
         SqlSession sqlSession = MybatisUtil.getSqlSession();
         AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
         Admin admin = adminDao.login("admin","111");
         System.out.println(admin);
         sqlSession.close();
     }
 ​
 }

这样我们就通过传递多个参数的方式完成了通过id查询Admin对象

注:

  • 此方式适合两个及两个以上参数使用,但是当参数较多时我们需要将每个参数都使用@Param()的方式进行绑定,比较繁琐,所以当参数较多时,我们推荐使用下面的使用parameterType进行参数类型定义的方式.

②使用parameterType进行参数类型定义:

格式: 

<insert id="insertUser" parameterType="User">
 insert into users (id, username, password)
 values (#{id}, #{username}, #{password})
 </insert>

代码示例:

1.首先,同样的我们需要使用@Param()的方式创建一个抽象接口,因为此处我们需要传递多个参数,所以我们直接将对象传递过去:

 Admin login1(Admin admin);

2.接下来在.xml文件中编写SQL语言:

<mapper namespace="com.ffyc.mybatisdemo.dao.AdminDao">
     <select id="login1" resultType="Admin" parameterType="Admin">
         select * from admin where account=#{account} and password=#{password}
     </select>    
 </mapper>

3.然后在main方法中调用我们的抽象方法:

 public class Test2 {
 ​
     @Test
     //使用 parameterType 参数进行类型定义
     public void login1() {
 ​
         SqlSession sqlSession = MybatisUtil.getSqlSession();
         AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
         Admin admin1 = new Admin("admin", "111",null);
         adminDao.login1(admin1);
         sqlSession.close();
     }
 }

这样我们就通过传递一个对象的方式完成了通过id查询Admin对象

猜你喜欢

转载自blog.csdn.net/weixin_52629592/article/details/125843102