@Param()
public interface UserMapper {
public int insertUser(User user);
public int updateUser(User user);
public int deleteUser(Integer id);
public User selectUserById(Integer id);
public List<User> selectAllUser();
// public List<User> selectUserByUserNameAndPassword(User user);
public User selectUserByUserNameAndPassword( String username ,String password);
}
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper">
<resultMap type="User" id="userMap">
<id property="Id" column="Id" javaType="int" />
<result property="username" column="username" javaType="String"/>
<result property="password" column="password" javaType="String"/>
</resultMap>
<insert id="insertUser" useGeneratedKeys="true" keyProperty="Id">
insert into user(username,password) values (#{username},#{password})
</insert>
<select id="selectAllUser" resultMap="userMap">
select * from user
</select>
<select id="selectUserByUserNameAndPassword" resultMap="userMap">
select * from user where username = #{0} and password = #{1}
</select>
</mapper>
SqlSession sqlsession = null;
try {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatiscConfig.xml"));
sqlsession= sqlSessionFactory.openSession();
User user = new User();
user.setUsername("admin");
user.setPassword("8954036aa");
Map<String, String> map = new HashMap<>();
map.put("username", "admin");
map.put("password","8954036aa");
map.put("0", "admin");
map.put("1", "8954036aa");
// sqlsession.insert("com.mapper.UserMapper.insertUser", user);
// List<User> list = sqlsession.selectList("com.mapper.UserMapper.selectUserByUserNameAndPassword", map);
//
//
//
// for (User user2 : list) {
//
// System.out.println(user2);
// }
User user1 = sqlsession.selectOne("com.mapper.UserMapper.selectUserByUserNameAndPassword", map);
System.out.println(user1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
@param 作用
例子:
public User selectUserByUserNameAndPassword(@Param("username") String username ,@Param("p") String password);
#Mapper.xml
<select id="selectUserByUserNameAndPassword" resultMap="userMap">
select * from user where username = #{username} and password = #{p}
</select>
Map<String, String> map = new HashMap<>();
map.put("username", "admin");
map.put("password","8954036aa");
User user1 = sqlsession.selectOne("com.mapper.UserMapper.selectUserByUserNameAndPassword", map);
System.out.println(user1);
结果查询为null。
<select id="selectUserByUserNameAndPassword" resultMap="userMap">
select * from user where username = #{0} and password = #{1}
</select>
结果查询为null。
Map<String, String> map = new HashMap<>();
map.put("username", "admin");
map.put("password","8954036aa");
map.put("0", "admin");
map.put("1", "8954036aa");
User user1 = sqlsession.selectOne("com.mapper.UserMapper.selectUserByUserNameAndPassword", map);
System.out.println(user1);
<select id="selectUserByUserNameAndPassword" resultMap="userMap">
select * from user where username = #{username} and password = #{password}
</select>
<select id="selectUserByUserNameAndPassword" resultMap="userMap">
select * from user where username = #{0} and password = #{1}
</select>
查询结果均有值
猜测@Param的作用是向Map中添加key ,然后传参的时候传递map
还没有看源码。