Mybatis获取参数的几种方式

朱雀 2024-04-08 11:27 168阅读 0赞

Mybatis获取参数的几种方式

这里以UserDao实现User类的方法为例,以代码及注释的方式展现

  1. package com.qcw.mybatis.mapper;
  2. import com.qcw.mybatis.pojo.User;
  3. import org.apache.ibatis.annotations.Param;
  4. import java.util.Map;
  5. /**
  6. *mybatis获取参数的几种方式:#{}和${}
  7. * -对于一下几种获取参数的方法可直接归结为两种:实体类类型的参数 和 参数上设置@param注解
  8. * 前三种方法都可以用第五种方法实现更为简便
  9. *
  10. * 1.若mapper接口方法的参数为单个的字面量类型,此时可以通过#{},${}以任意内容获取参数值
  11. *
  12. * 2.若mapper接口方法的参数为多个字面量类型
  13. * -此时mybatis会将参数放在map集合,以两种方式存储数据,
  14. * -以arg0,arg1...为键,以参数为值;或者以param1,param2...为键,以参数为值
  15. * -因此,只需要通过#{},${}访问map集合的键,来获取相应的值
  16. *
  17. * 3.若mapper接口方法的参数为map集合类型的参数,
  18. * -只需要通过#{},${}访问map集合的键,就可以获取相应的值
  19. *
  20. * 4.若mapper接口方法的参数为实体类类型的参数
  21. * -只需要通过#{},${}访问实体类中的属性名,就可以获取相应的值
  22. *
  23. * 5.可以在mapper接口方法的参数上设置@param注解,此时mybatis会将这些参数放在map中
  24. * 以两种方式进行存储 (相比2,3两种方法更为简便,所以更建议使用代替前三种方法)
  25. * -以@param注解的value值为键,以参数为值,或者以param1,param2..为键,以参数为值
  26. */
  27. public interface UserMapper {
  28. //根据用户名查询用户信息
  29. User getUserByUsername(String username);
  30. //验证登录
  31. User checkLogin(String username, String password);
  32. //验证登录(以map集合来作为参数)
  33. User checkLoginByMap(Map<String,Object> map);
  34. //添加用户信息
  35. void insertUser(User user);
  36. //验证登录,使用@Param注解
  37. User checkLoginByParam(@Param("username") String username, @Param("password") String password);
  38. }
  39. <?xml version="1.0" encoding="UTF-8" ?>
  40. <!DOCTYPE mapper
  41. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  42. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  43. <mapper namespace="com.qcw.mybatis.mapper.UserMapper">
  44. <select id="getUserByUsername" resultType="User">
  45. select * from t_user where username = #{
  46. username}
  47. </select>
  48. <select id="checkLogin" resultType="User">
  49. select * from t_user where username = #{
  50. param1} and password = #{
  51. param2}
  52. </select>
  53. <select id="checkLoginByMap" resultType="User">
  54. select * from t_user where username = #{
  55. username} and password = #{
  56. password}
  57. </select>
  58. <!-- mapper接口方法的参数为实体类类型的参数-->
  59. <insert id="insertUser">
  60. insert into t_user values(null ,#{
  61. username},#{
  62. password},#{
  63. age},#{
  64. gender},#{
  65. email})
  66. </insert>
  67. <!-- mapper接口方法的参数上设置@param注解-->
  68. <select id="checkLoginByParam" resultType="User">
  69. select * from t_user where username = #{
  70. username} and password = #{
  71. password}
  72. </select>
  73. </mapper>
  74. package com.qcw.mybatis.test;
  75. import com.qcw.mybatis.mapper.UserMapper;
  76. import com.qcw.mybatis.pojo.User;
  77. import com.qcw.mybatis.utils.SqlSessionUtil;
  78. import org.apache.ibatis.session.SqlSession;
  79. import org.junit.Test;
  80. import java.util.HashMap;
  81. import java.util.Map;
  82. public class ParameterTest {
  83. @Test
  84. public void getUserByUsernameTest(){
  85. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  86. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  87. User user = mapper.getUserByUsername("wqc");
  88. System.out.println("user = " + user);
  89. }
  90. @Test
  91. public void checkLoginTest(){
  92. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  93. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  94. User user = mapper.checkLogin("wqc", "12345");
  95. System.out.println("user = " + user);
  96. }
  97. @Test
  98. public void checkLoginByMapTest(){
  99. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  100. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  101. Map<String,Object> map = new HashMap<>();
  102. map.put("username","wqc");
  103. map.put("password","12345");
  104. User user = mapper.checkLoginByMap(map);
  105. System.out.println("user = " + user);
  106. }
  107. @Test
  108. public void insertUserTest(){
  109. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  110. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  111. User user = new User(null,"root","12357",26,"女","377@qq.com");
  112. mapper.insertUser(user);
  113. System.out.println("user = " + user);
  114. }
  115. @Test
  116. public void checkLoginByParamTest(){
  117. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  118. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  119. User user = mapper.checkLoginByParam("wqc", "12345");
  120. System.out.println("user = " + user);
  121. }
  122. }

注:代码为本人学习记录,仅供参考

发表评论

表情:
评论列表 (有 0 条评论,168人围观)

还没有评论,来说两句吧...

相关阅读