java - mybatis用户登录,Dao层如何传入多个参数?
黄舟
黄舟 2017-04-18 10:37:04
0
1
513
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(1)
黄舟

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 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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan