Mybatis获取参数的几种方式
Mybatis获取参数的几种方式
这里以UserDao实现User类的方法为例,以代码及注释的方式展现
package com.qcw.mybatis.mapper;
import com.qcw.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
*mybatis获取参数的几种方式:#{}和${}
* -对于一下几种获取参数的方法可直接归结为两种:实体类类型的参数 和 参数上设置@param注解
* 前三种方法都可以用第五种方法实现更为简便
*
* 1.若mapper接口方法的参数为单个的字面量类型,此时可以通过#{},${}以任意内容获取参数值
*
* 2.若mapper接口方法的参数为多个字面量类型
* -此时mybatis会将参数放在map集合,以两种方式存储数据,
* -以arg0,arg1...为键,以参数为值;或者以param1,param2...为键,以参数为值
* -因此,只需要通过#{},${}访问map集合的键,来获取相应的值
*
* 3.若mapper接口方法的参数为map集合类型的参数,
* -只需要通过#{},${}访问map集合的键,就可以获取相应的值
*
* 4.若mapper接口方法的参数为实体类类型的参数
* -只需要通过#{},${}访问实体类中的属性名,就可以获取相应的值
*
* 5.可以在mapper接口方法的参数上设置@param注解,此时mybatis会将这些参数放在map中
* 以两种方式进行存储 (相比2,3两种方法更为简便,所以更建议使用代替前三种方法)
* -以@param注解的value值为键,以参数为值,或者以param1,param2..为键,以参数为值
*/
public interface UserMapper {
//根据用户名查询用户信息
User getUserByUsername(String username);
//验证登录
User checkLogin(String username, String password);
//验证登录(以map集合来作为参数)
User checkLoginByMap(Map<String,Object> map);
//添加用户信息
void insertUser(User user);
//验证登录,使用@Param注解
User checkLoginByParam(@Param("username") String username, @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="com.qcw.mybatis.mapper.UserMapper">
<select id="getUserByUsername" resultType="User">
select * from t_user where username = #{
username}
</select>
<select id="checkLogin" resultType="User">
select * from t_user where username = #{
param1} and password = #{
param2}
</select>
<select id="checkLoginByMap" resultType="User">
select * from t_user where username = #{
username} and password = #{
password}
</select>
<!-- mapper接口方法的参数为实体类类型的参数-->
<insert id="insertUser">
insert into t_user values(null ,#{
username},#{
password},#{
age},#{
gender},#{
email})
</insert>
<!-- mapper接口方法的参数上设置@param注解-->
<select id="checkLoginByParam" resultType="User">
select * from t_user where username = #{
username} and password = #{
password}
</select>
</mapper>
package com.qcw.mybatis.test;
import com.qcw.mybatis.mapper.UserMapper;
import com.qcw.mybatis.pojo.User;
import com.qcw.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class ParameterTest {
@Test
public void getUserByUsernameTest(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserByUsername("wqc");
System.out.println("user = " + user);
}
@Test
public void checkLoginTest(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.checkLogin("wqc", "12345");
System.out.println("user = " + user);
}
@Test
public void checkLoginByMapTest(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<>();
map.put("username","wqc");
map.put("password","12345");
User user = mapper.checkLoginByMap(map);
System.out.println("user = " + user);
}
@Test
public void insertUserTest(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(null,"root","12357",26,"女","377@qq.com");
mapper.insertUser(user);
System.out.println("user = " + user);
}
@Test
public void checkLoginByParamTest(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.checkLoginByParam("wqc", "12345");
System.out.println("user = " + user);
}
}
注:代码为本人学习记录,仅供参考
还没有评论,来说两句吧...