欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis傳遞多個參數(shù)方式

 更新時間:2024年02月01日 08:43:16   作者:pan_junbiao  
這篇文章主要介紹了MyBatis傳遞多個參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis是一款優(yōu)秀的ORM框架。

使用MyBatis進行開發(fā)時經(jīng)常需要往方法中傳遞多個參數(shù),下面將介紹幾種MyBatis傳遞多個參數(shù)的方法。

【示例】

根據(jù)用戶賬號和用戶密碼,獲取用戶信息。

(1)在MySQL數(shù)據(jù)庫中創(chuàng)建用戶信息表(tb_user),并添加數(shù)據(jù)。

-- 創(chuàng)建“用戶信息”數(shù)據(jù)表
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 = '用戶信息表';
 
-- 添加數(shù)據(jù)
INSERT INTO tb_user(user_account,user_password,blog_url,remark) VALUES('pan_junbiao的博客','123456','https://blog.csdn.net/pan_junbiao','您好,歡迎訪問 pan_junbiao的博客');

(2)創(chuàng)建用戶信息持久化類(User.java)。

package com.pjb.mybatis.po;
 
/**
 * 用戶信息的持久化類
 * @author pan_junbiao
 **/
public class User
{
    private int id; //用戶編號
    private String userAccount; //用戶賬號
    private String userPassword; //用戶密碼
    private String blogUrl; //博客地址
    private String remark; //備注
 
    //省略getter與setter方法...
}

(3)開啟駝峰命名規(guī)則。

實例中使用了MyBatis駝峰命名規(guī)則。

需要在MyBatis的全局配置文件SqlMapConfig.xml(mybatis-config.xml)中,設(shè)置開啟駝峰命名規(guī)則配置。

<!-- 開啟自動駝峰命名規(guī)則(camel case)映射 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>

方法一:順序傳參法

創(chuàng)建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.pjb.mybatis.mapper.UserMapper">
 
    <!-- 根據(jù)用戶賬號和用戶密碼,獲取用戶信息 -->
    <select id="getUser" resultType="com.pjb.mybatis.po.User">
        SELECT * FROM tb_user
        WHERE user_account = #{arg0}
        AND user_password = #{arg1}
    </select>
 
</mapper>

說明:順序傳遞參法使用:#{arg0}、#{arg1}... 作為占位符,數(shù)字代表傳入?yún)?shù)的順序。

注意:在Mybatis3.4.2或之前的版本中使用:#{0}、#{1}... 作為占位符,但在新版本的MyBatis中,這種方式已經(jīng)過時了,會提示錯誤:

org.apache.ibatis.binding.BindingException: Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2]

創(chuàng)建用戶信息Mapper動態(tài)代理接口。

package com.pjb.mybatis.mapper;
 
import com.pjb.mybatis.po.User;
 
/**
 * 用戶信息Mapper動態(tài)代理接口
 * @author pan_junbiao
 **/
public interface UserMapper
{
    public User getUser(String account,String password);
}

編寫執(zhí)行方法。

/**
 * MyBatis傳遞多個參數(shù)
 * @author pan_junbiao
 */
@Test
public void getUser()
{
    DataConnection dataConnection = new DataConnection();
    SqlSession sqlSession = dataConnection.getSqlSession();
    //獲取Mapper代理
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    //執(zhí)行Mapper代理對象的查詢方法
    User user = userMapper.getUser("pan_junbiao的博客","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();
}

執(zhí)行結(jié)果:

方法二:@Param注解傳參法(推薦)

public User getUser(@Param("userAccount") String account,@Param("userPassword") String password);
<select id="getUser" resultType="com.pjb.mybatis.po.User">
    SELECT * FROM tb_user
    WHERE user_account = #{userAccount}
    AND user_password = #{userPassword}
</select>

#{}里面的名稱對應(yīng)的是注解@Param括號里面修飾的名稱。

這種方法在參數(shù)不多的情況還是比較直觀的,推薦使用。

方法三:Map傳參法

public User getUser(Map<String, Object> params);
<select id="getUser" parameterType="java.util.Map" resultType="com.pjb.mybatis.po.User">
    SELECT * FROM tb_user
    WHERE user_account = #{userAccount}
    AND user_password = #{userPassword}
</select>

調(diào)用方法:

//獲取Mapper代理
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//查詢參數(shù)
Map params = new HashMap();
params.put("userAccount","pan_junbiao的博客");
params.put("userPassword","123456");
//執(zhí)行Mapper代理對象的查詢方法
User user = userMapper.getUser(params);

#{}里面的名稱對應(yīng)的是Map里面的key名稱。

這種方法適合傳遞多個參數(shù),且參數(shù)易變能靈活傳遞的情況。

方法四:JavaBean傳參法(推薦)

創(chuàng)建用戶信息參數(shù)類(UserParam.java)。

package com.pjb.mybatis.po;
 
/**
 * 用戶信息參數(shù)類
 * @author pan_junbiao
 **/
public class UserParam
{
    private String userAccount; //用戶賬號
    private String userPassword; //用戶密碼
 
    //省略getter與setter方法...
}
public User getUser(UserParam userParam);
<select id="getUser" parameterType="com.pjb.mybatis.po.UserParam" resultType="com.pjb.mybatis.po.User">
    SELECT * FROM tb_user
    WHERE user_account = #{userAccount}
    AND user_password = #{userPassword}
</select>

調(diào)用方法:

//獲取Mapper代理
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//查詢參數(shù)
UserParam userParam = new UserParam();
userParam.setUserAccount("pan_junbiao的博客");
userParam.setUserPassword("123456");
//執(zhí)行Mapper代理對象的查詢方法
User user = userMapper.getUser(userParam);

#{}里面的名稱對應(yīng)的是UserParam類里面的成員屬性。

這種方法很直觀,需要建一個實體類,推薦使用。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論