[英]myBatis. ResultMap and properties
我正在嘗試在我的項目中使用 myBatis。 對於“選擇”方法,我使用了結果圖
<?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="resultMap">
<resultMap id="userMap" type="db.entities.User">
<result column="id" property="id"/>
<result column="login" property="login"/>
<result column="password" property="password"/>
<result column="service_profile" property="serviceProfile.id"/>
<result column="driver_profile" property="driverProfile.id"/>
<result column="premium_expiring_time" property="premiumExpiringDate"/>
<result column="registration_date" property="registrationDate"/>
<result column="last_visit_date" property="lastVisitDate"/>
<result column="authorization_key" property="authorizationKey"/>
<result column="last_altitude" property="lastGeoAltitude"/>
<result column="last_longitude" property="lastGeoLongitude"/>
</resultMap>
</mapper>
它有效,當我從我的類的函數參數實例中獲取時
@ResultMap("resultMap.userMap")
@Select("SELECT * FROM users WHERE login = #{login} AND password = #{password}")
fun getUser(user: User): User?
但我認為,這是個壞主意,因為首先我需要創建 User()。 當我嘗試在函數的參數中使用“登錄”和“密碼”時,我有一個例外:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'login' not found. Available parameters are [arg1, arg0, param1, param2]
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'login' not found. Available parameters are [arg1, arg0, param1, param2]
如何在不創建類 User 的情況下使用傳入參數?
您需要 1) 將@Param
添加到每個參數或 2) 添加 Kotlin 編譯器選項-java-parameters
。
1) 將如下所示:
@ResultMap("resultMap.userMap")
@Select("SELECT * FROM users WHERE login = #{login} AND password = #{password}")
fun getUser(
@Param("login") login: String,
@Param("password") password: String): User?
2) 需要 MyBatis 3.4.1+ 和 Kotlin 1.1+。
MyBatis 的參數名解析有些復雜,主要是歷史原因。
如果您有興趣,請參閱此答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.