/*
* @author h
* @desc
* Mybatis中获取参数值的两种方式:${},#{}
* ${}本质是字符串拼接
* #{}本质是占位符
* Mybatis获取参数值的各种情况:
* 1、mapper接口方法的参数
* 2、mapper接口方法的参数有多个
* 此时Mybatis会将参数放入一个Map集合中,以两种方式进行存储
* 3、若mapper接口方法的参数有多个时,可以手动将这些参数放在map中存储
* 4、mapper接口方法的参数是实体类类型的参数
* 通过属性来访问即可
* 5、命名参数(注解)
*/
@Test
public void getAllUser(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
List<User> users = mapper.getAllUser();
for (Object o: users
) {
System.out.println(o);
}
}
@Test
public void getUserByUsername(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
User user = mapper.getUserByUsername("张三");
System.out.println(user);
}
@Test
public void checkLogin(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
User user = mapper.checkLogin("张三","123456");
System.out.println(user);
}
@Test
public void checkLoginByMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
Map<String,Object> map = new HashMap<>();
map.put("username","张三");
map.put("password","123456");
User user = mapper.checkLoginByMap(map);
System.out.println(user);
}
@Test
public void insertUser(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
int result = mapper.insertUser(new User(null,"李四","abc123",23,"男","123@qq.com"));
System.out.println(result);
}
}
<?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="mybatis.mapper.ParameterMapper">
<!--List<User> getAllUser();-->
<select id="getAllUser" resultType="User">
select * from t_user
</select>
<!--User getUserByUsername(String name)-->
<select id="getUserByUsername" resultType="User">
<!--#{}中的值可以为任意,只是想跟参数名保持一致-->
<!-- select * from t_user where username = #{username}-->
select * from t_user where username = ${username}
</select>
<!--User checkLogin(String username, String password);-->
<select id="checkLogin" resultType="User">
select * from t_user where username = #{arg0} and password = #{arg1}
</select>
<!--User checkLoginByMap(Map<String,Object> map);-->
<select id="checkLoginByMap" resultType="User">
select * from t_user where username = #{username} and password = #{password}
</select>
<!--int insertUser(User user);-->
<insert id="insertUser">
insert into t_user values(null, #{username},#{password},#{age},#{sex},#{email})
</insert>
</mapper>