亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis如何獲取參數值和查詢功能

發布時間:2023-03-21 10:18:48 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

這篇文章主要介紹了Mybatis如何獲取參數值和查詢功能的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Mybatis如何獲取參數值和查詢功能文章都會有所收獲,下面我們一起來看看吧。

一、MyBatis的增刪改查

1.1、新增

<!--int insertUser();-->
<insert id="insertUser">
    insert into t_user values(null,'admin','123456',23,'男')
</insert>

1.2、刪除

<!--int deleteUser();-->
<delete id="deleteUser">
    delete from t_user where id = 1
</delete>

1.3、修改

<!--int updateUser();-->
<update id="updateUser">
    update t_user set username='ybc',password='123' where id = 6
</update>

1.4、查詢一個實體類對象

<!--User getUserById();-->
<select id="getUserById" resultType="com.ssm.mybatis.bean.User">
    select * from t_user where id = 2
</select>

1.5、查詢list集合

<!--List<User> getUserList();-->
<select id="getUserList" resultType="com.ssm.mybatis.bean.User">
    select * from t_user
</select>

注意: 查詢的標簽select必須設置屬性resultType或resultMap,用于設置實體類和數據庫表的映射關系

resultType:自動映射,用于屬性名和表中字段名一致的情況

resultMap:自定義映射,用于一對多或多對一或字段名和屬性名不一致的情況

二、MyBatis獲取參數值的兩種方式

MyBatis獲取參數值的兩種方式:${}#{}

${} 的本質就是字符串拼接,#{} 的本質就是占位符賦值

${} 使用字符串拼接的方式拼接sql,若為字符串類型或日期類型的字段進行賦值時,需要手動加單 引號

 #{} 使用占位符賦值的方式拼接sql,此時為字符串類型或日期類型的字段進行賦值時, 可以自動添加單引號

2.1、單個字面量類型的參數

若 mapper 接口中的方法參數為單個的字面量類型

此時可以使用 ${}#{} 以任意的名稱獲取參數的值,注意 ${} 需要手動加單引號

    <!--User getUserByUsername(String username);-->
    <select id="getUserByUsername" resultType="User">
        <!--select * from t_user where username = '${username}'-->
        select * from t_user where username = #{username}
    </select>

2.2、多個字面量類型的參數

若mapper接口中的方法參數為多個時

此時MyBatis會自動將這些參數放在一個map集合中,以arg0,arg1...為鍵,以參數為值、以 param1,param2...為鍵,以參數為值;

因此只需要通過 ${}#{} 訪問map集合的鍵就可以獲取相 對應的值,注意 ${} 需要手動加單引號

    <!--User checkLogin(String username, String password);-->
    <select id="checkLogin" resultType="User">
        <!--select * from t_user where username = '${arg0}' and password = '${arg1}'-->
        <!--select * from t_user where username = #{param1} and password = #{param2}-->
        select * from t_user where username = #{arg0} and password = #{arg1}
 
    </select>

2.3、map集合類型的參數

若mapper接口中的方法需要的參數為多個時,此時可以手動創建map集合,將這些數據放在 map中

只需要通過 ${} #{} 訪問map集合的鍵就可以獲取相對應的值,注意 ${} 需要手動加單引號

    <!--User checkLoginByMap(Map<String ,Object> map);-->
    <select id="checkLoginByMap" resultType="User">
        <!--select * from t_user where username = '${username}' and password = '${password}'-->
        select * from t_user where username = #{username} and password = #{password}
    </select>

2.4、實體類類型的參數

若mapper接口中的方法參數為實體類對象時

此時可以使用 ${} #{} ,通過訪問實體類對象中的屬性名獲取屬性值,注意 ${} 需要手動加單引號

    <!--void insertUser(User user);-->
    <insert id="insertUser" >
        insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
    </insert>

2.5、使用@Param標識參數

可以通過 @Param 注解標識mapper接口中的方法參數

此時,會將這些參數放在map集合中,以@Param注解的value屬性值為鍵,以參數為值;以 param1,param2...為鍵,以參數為值;

只需要通過 ${} #{} 訪問map集合的鍵就可以獲取相對應 的值, 注意 ${} 需要手動加單引號

    <!--User checkLoginByParam(@Param("username") String username, @Param("password") String password);-->
    <select id="checkLoginByParam" resultType="User">
        <!--select * from t_user where username = '${username}' and password = '${password}'-->
        select * from t_user where username = #{username} and password = #{password}
    </select>

三、MyBatis的各種查詢功能

3.1、查詢一個實體類對象

package com.ssm.mybatis.mapper;
 
import com.ssm.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;
 
import java.util.List;
 
/**
 * Author:wy
 * Date:2023/3/18
 */
 
public interface SelectMapper {
    /**
     * 根據用戶id查詢用戶信息
     * @param id
     * @return
     */
    User getUserById(@Param("id") int id);
}
<!--User getUserById(@Param("id") int id);-->
<select id="getUserById" resultType="User">
    select * from t_user where id = #{id}
</select>
    @Test
    public void testGetUserById() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
 
        User user = mapper.getUserById(1);
        System.out.println(user);
    }

3.2、查詢一個list集合

    /**
     * 查詢所有用戶信息
     * @return
     */
    List<User> getUserList();
    <!--List<User> getUserList();-->
    <select id="getUserList" resultType="User">
        select * from t_user
    </select>
    @Test
    public void testGetUserList() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
 
        List<User> userList = mapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
    }

當查詢的數據為多條時,不能使用實體類作為返回值,否則會拋出異常TooManyResultsException;

但是若查詢的數據只有一條,可以使用實體類或集合作為返回值

3.3、查詢單個數據

    /**
     * 查詢用戶的總記錄數
     * @return
     */
    Integer getCount();
     <!--Integer getCount();-->
    <!--
        在MyBatis中,對于Java中常用的類型都設置了類型別名
        例如: Integer: int, integer
        例如: int: _int, _integer
        例如: Map: map
              List: list
    -->
    <select id="getCount" resultType="Integer">
        select count(*) from t_user
    </select>
    @Test
    public void testGetCount() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
 
        Integer count = mapper.getCount();
        System.out.println("用戶總數=" + count);
    }

3.4、查詢一條數據為map集合

    /**
     * 根據用戶id查詢用戶信息為map集合
     * @param id
     * @return
     */
    Map<String, Object> getUserByIdToMap(@Param("id") Integer id);
    <!--Map<String, Object> getUserByIdToMap(@Param("id") int id);-->
    <select id="getUserByIdToMap" resultType="map">
        select * from t_user where id = #{id}
    </select>
    @Test
    public void testGetUserByIdToMap() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
 
        Map<String, Object> map = mapper.getUserByIdToMap(1);
        System.out.println(map);
        //結果:{password=123456, gender=男, id=1, age=21, email=123456@qq.com, username=張三}
    }

3.5、查詢多條數據為map集合

方式一

    /**
     * 查詢所有用戶信息為map集合
     * @return
     * 將表中的數據以map集合的方式查詢,一條數據對應一個map;若有多條數據,就會產生多個map集合
       此時可以將這些map放在一個list集合中獲取
     */
    @MapKey("id")
    List<Map<String, Object>> getAllUserToMap();
    <!--Map<String, Object> getAllUserToMap();-->
    <select id="getAllUserToMap" resultType="map">
        select * from t_user
    </select>
    @Test
    public void testGetAllUserToMap() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
 
        List<Map<String, Object>> allUserToMap = mapper.getAllUserToMap();
 
        for (Map<String, Object> map : allUserToMap) {
            System.out.println(map);
        }
    }

方式二

    /**
     * 查詢所有用戶信息為map集合
     * @return
     * 可以將每條數據轉換的map集合放在一個大的map中,
     * 但是必須要通過@Mapkey注解將查詢的某個字段的值作為大的map的鍵
     */
    @MapKey("id")
    Map<String, Object> getAllUserToMap();
    <!--Map<String, Object> getAllUserToMap();-->
    <select id="getAllUserToMap" resultType="map">
        select * from t_user
    </select>
    @Test
    public void testGetAllUserToMap() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
 
        Map<String, Object> map = mapper.getAllUserToMap();
        System.out.println(map);
        //{ 
        // 1={password=123456, gender=男, id=1, age=21, email=123456@qq.com, username=張三}, 
        // 2={password=123456, gender=女, id=2, age=19, email=123456@qq.com, username=老六} 
        // }
    }

關于“Mybatis如何獲取參數值和查詢功能”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Mybatis如何獲取參數值和查詢功能”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宽城| 乌兰浩特市| 潼关县| 大安市| 会同县| 宿松县| 咸阳市| 荔波县| 松溪县| 石渠县| 临沭县| 巴青县| 龙江县| 通州市| 柘城县| 钟山县| 湘潭县| 隆回县| 安阳县| 武陟县| 郑州市| 哈尔滨市| 平度市| 通许县| 运城市| 巴林左旗| 扬州市| 曲麻莱县| 富宁县| 青州市| 高平市| 道孚县| 安徽省| 德令哈市| 分宜县| 海晏县| 长岛县| 枣阳市| 定西市| 静安区| 曲阜市|