Tentukan Kacang khusus untuk menghantar parameter dan sediakan kaedah Setter/Getter Kaedah ini jelas terlalu menyusahkan. Tetapi ia boleh dipermudahkan, hanya masukkan berbilang parameter ke dalam map dan masukkan map.
Kaedah 2
Anda boleh memasukkan parameter dalam kaedah yang ditakrifkan oleh mapper接口 dan menggunakan anotasi org.apache.ibatis.annotations.Param untuk menandakan nama parameter. Contohnya:
public interface UserMapper{
User login(@Param("name")String name,@Param("password")String password);
}
Selepas itu, hanya gunakan pemetaan nama yang sepadan dalam xml:
<select id="login" resultMap="UserResultMap">
select col1,col2,col3
from tal_name
where user_name=#{name} and pwd=#{password}
</select>
Nota
Jika anda ingin menggunakan kaedah 2, kaedah semasa anda tidak akan berfungsi. Kerana anda membuat panggilan menggunakan sqlSession.selectOne(queryId) atau sqlSession.selectOne(queryId,paramObj). Untuk menggunakan kaedah dua, anda mesti menggunakan sqlSession.getMapper(UserMapper.class) untuk mendapatkan antara muka yang ditentukan (DAO Selepas mendapat antara muka, anda boleh lulus parameter secara relatifnya, kerana definisi kaedah dalam antara muka adalah kaedah java biasa takrifan. Anda boleh menggunakan anotasi @Param untuk menandakan parameter dalam kaedah antara muka yang ditentukan. Contoh kasar adalah seperti berikut:
package cn.xxx.dao;
public interface UserMapper{
User login(@Param("name")String name,@Param("password")String password);
}
<?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="cn.xxx.dao.UserMapper">
<select id="login" resultMap="UserResultMap">
select col1,col2,col3
from tal_name
where user_name=#{name} and pwd=#{password}
</select>
</mapper>
Perlu dinyatakan di sini:
Nama kelas penuh DAO接口cn.xxx.dao.UserMapper tersuai harus sepadan dengan atribut <mapper namespace="cn.xxx.dao.UserMapper"> dalam namespace. Pada masa yang sama, nilai namespace (cn.xxx.dao.UserMapper) dan select nilai atribut (log masuk) id sebenarnya adalah sqlSession.selectOne(queryId) anda gunakan. queryId
Jika ia adalah projek
, anda harus meletakkan maven di bawah laluan sumber (xxxMapper.xml) dan bukannya laluan kod sumber (src/main/resources), jika tidak src/main/java di bawah sumber masa jalan laluan kod 🎜>tidak ditemui. xml文件
Cadangan lain ialah: Periksa secara visual bahawa anda menggunakan
untuk mengurus Spring Memandangkan ini, terdapat cara lain untuk mengurus Bean, yang tidak memerlukan suntikan SqlSessionFactory secara langsung ke dalam DAO. . Berikut ialah contoh penyepaduan SqlSessionFactory yang saya fock datang daripada orang lain sebelum ini: https://github.com/hylexus/be...SSM
Terdapat dua kaedah biasa:
Kaedah 1
Tentukan Kacang khusus untuk menghantar parameter dan sediakan kaedah Setter/Getter Kaedah ini jelas terlalu menyusahkan.
Tetapi ia boleh dipermudahkan, hanya masukkan berbilang parameter ke dalam
map
dan masukkanmap
.Kaedah 2
Anda boleh memasukkan parameter dalam kaedah yang ditakrifkan oleh
mapper接口
dan menggunakan anotasiorg.apache.ibatis.annotations.Param
untuk menandakan nama parameter. Contohnya:Selepas itu, hanya gunakan pemetaan nama yang sepadan dalam xml:
Nota
Jika anda ingin menggunakan kaedah 2, kaedah semasa anda tidak akan berfungsi.
Kerana anda membuat panggilan menggunakan
sqlSession.selectOne(queryId)
atausqlSession.selectOne(queryId,paramObj)
.Untuk menggunakan kaedah dua, anda mesti menggunakan
sqlSession.getMapper(UserMapper.class)
untuk mendapatkan antara muka yang ditentukan (DAO
Selepas mendapat antara muka, anda boleh lulus parameter secara relatifnya, kerana definisi kaedah dalam antara muka adalah kaedah java biasa takrifan. Anda boleh menggunakan anotasi@Param
untuk menandakan parameter dalam kaedah antara muka yang ditentukan. Contoh kasar adalah seperti berikut:Perlu dinyatakan di sini:
Nama kelas penuh
DAO接口
cn.xxx.dao.UserMapper
tersuai harus sepadan dengan atribut<mapper namespace="cn.xxx.dao.UserMapper">
dalamnamespace
.Pada masa yang sama, nilai
namespace
(cn.xxx.dao.UserMapper) danselect
nilai atribut (log masuk)id
sebenarnya adalah sqlSession.selectOne(queryId) anda gunakan.queryId
, anda harus meletakkan
maven
di bawah laluan sumber (xxxMapper.xml
) dan bukannya laluan kod sumber (src/main/resources
), jika tidaksrc/main/java
di bawah sumber masa jalan laluan kod 🎜>tidak ditemui.xml文件
untuk mengurus
Spring
Memandangkan ini, terdapat cara lain untuk mengurusBean
, yang tidak memerlukan suntikanSqlSessionFactory
secara langsung ke dalamDAO
. . Berikut ialah contoh penyepaduanSqlSessionFactory
yang sayafock
datang daripada orang lain sebelum ini: https://github.com/hylexus/be...SSM