日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10、mybatis参数处理

發布時間:2025/3/19 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10、mybatis参数处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 1、單個參數:mybatis不做任何處理
      • 2、多個參數:mybatis會做特殊處理
      • 3、命名參數:明確指定封裝參數時map的key:@Param("id")
        • 3.1 EmployeeMapper接口
        • 3.2 EmployeeMapper.xml
        • 3.3 Test
      • 4、POJO,
      • 5、Map
        • 5.1 EmployeeMapper
        • 5.2 EmployeeMapper.xml
        • 5.3 Test
      • 6、TO
      • 7、jdbcType通常需要在某種特定的條件下被設置

1、單個參數:mybatis不做任何處理

#{參數名}:取出參數

2、多個參數:mybatis會做特殊處理

多個參數會被封裝成一個mapkey:param1...paramN,或者參數的索引也可以value:傳入的參數 #{}就是從map中獲取指定的key的值;

3、命名參數:明確指定封裝參數時map的key:@Param(“id”)

多個參數會被封裝成一個mapkey:使用@Param注解指定的值value:參數值 #{指定的key}取出對應的參數值

3.1 EmployeeMapper接口

package com.mi.dao;import com.mi.pojo.Employee; import org.apache.ibatis.annotations.Param;public interface EmployeeMapper {public Employee getEmployeeById(Integer id);public Integer addEmp(Employee employee);public Integer deleteEmp(Integer id);public Integer updateEmp(Employee employee);public Employee getEmployeeByParam(@Param("id") Integer id, @Param("lastName") String lastName);}

3.2 EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--指定為接口的全類名--> <mapper namespace="com.mi.dao.EmployeeMapper"><!--id 為接口的方法名--><select id="getEmployeeById" resultType="com.mi.pojo.Employee">select * from employee where id = #{id}</select><insert id="addEmp" parameterType="com.mi.pojo.Employee"useGeneratedKeys="true" keyProperty="id">insert into employee (last_name,gender) values (#{lastName},#{gender})</insert><delete id="deleteEmp">delete from employee where id = #{id}</delete><update id="updateEmp" >update employee set last_name = #{lastName},gender = #{gender} where id = #{id}</update><select id="getEmployeeByParam" resultType="com.mi.pojo.Employee">select * from employee where id = #{id} and last_name = #{lastName}</select> </mapper>

3.3 Test

@Testpublic void testGetParam() throws IOException {//1、獲取SqlSessionFactory對象SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//2、獲取Sqlsesion對象SqlSession sqlSession = sqlSessionFactory.openSession();try {//3、獲取接口的實現類對象//會為接口自動創建一個代理對象,代理對象去執行增刪改查方法EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);Employee employee = mapper.getEmployeeByParam(3,"jerry");System.out.println(employee);}finally {sqlSession.close();}}

4、POJO,

如果多個參數正好是我們業務邏輯的數據模型,我們就可以直接傳入pojo,
#{屬性名}:取出傳入的pojo的屬性值

5、Map

如果多個參數不是業務模型中的數據,沒有對應的pojo,為了方便,我們也可以傳入map

#{key}:取出map中對應的值

5.1 EmployeeMapper

package com.mi.dao;import com.mi.pojo.Employee; import org.apache.ibatis.annotations.Param;import java.util.Map;public interface EmployeeMapper {public Employee getEmployeeById(Integer id);public Integer addEmp(Employee employee);public Integer deleteEmp(Integer id);public Integer updateEmp(Employee employee);public Employee getEmployeeByParam(@Param("id") Integer id, @Param("lastName") String lastName);public Employee getEmployeeByMap(Map map);}

5.2 EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--指定為接口的全類名--> <mapper namespace="com.mi.dao.EmployeeMapper"><!--id 為接口的方法名--><select id="getEmployeeById" resultType="com.mi.pojo.Employee">select * from employee where id = #{id}</select><insert id="addEmp" parameterType="com.mi.pojo.Employee"useGeneratedKeys="true" keyProperty="id">insert into employee (last_name,gender) values (#{lastName},#{gender})</insert><delete id="deleteEmp">delete from employee where id = #{id}</delete><update id="updateEmp" >update employee set last_name = #{lastName},gender = #{gender} where id = #{id}</update><select id="getEmployeeByParam" resultType="com.mi.pojo.Employee">select * from employee where id = #{id} and last_name = #{lastName}</select><select id="getEmployeeByMap" resultType="com.mi.pojo.Employee">select * from employee where id = #{id} and last_name = #{lastName}</select> </mapper>

5.3 Test

@Testpublic void testGetByMap() throws IOException {//1、獲取SqlSessionFactory對象SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//2、獲取Sqlsesion對象SqlSession sqlSession = sqlSessionFactory.openSession();try {//3、獲取接口的實現類對象//會為接口自動創建一個代理對象,代理對象去執行增刪改查方法EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);Map<String,Object> map = new HashMap<String, Object>();map.put("id",3);map.put("lastName","jerry");Employee employee = mapper.getEmployeeByMap(map);System.out.println(employee);}finally {sqlSession.close();}}

6、TO

如果多個參數不是業務模型中的數據,但是經常使用,推薦來編寫一個TO(Transfer Object)

page{
int index;
int size;
}

7、jdbcType通常需要在某種特定的條件下被設置

在我們數據為null的時候,有些數據庫可能不能識別mybatis對null的默認處理,比如Oracle(報錯)
jdbcType OTHER 無效的類型:因為mybatis對所有的null都映射的是原生的Jdbc的 OTHER 類型,oracle不能正確處理。

由于全局配置中:jdbcTypeForNull=OTHER;oracle不支持,兩種辦法
1、#{email,jdbcType=OTHER};
2、jdbcTypeForNULL = NULL

總結

以上是生活随笔為你收集整理的10、mybatis参数处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。