mybatis几种传值方式

简介: mybatis几种传值方式

第一种方案

DAO层的函数方法

Public User selectUser(String name,String area);

对应的Mapper.xml

<select id="selectUser" resultMap="BaseResultMap">
    select  *  from user_user_t   where user_name = #{0} and user_area=#{1}
</select>

其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。

第二种方案

此方法采用Map传多参数.

Dao层的函数方法

Public User selectUser(Map paramMap);

对应的Mapper.xml

<select id=" selectUser" resultMap="BaseResultMap">
   select  *  from user_user_t   where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
</select>

Service层调用

Private User xxxSelectUser(){
Map paramMap=new hashMap();
paramMap.put(“userName”,”对应具体的参数值”);
paramMap.put(“userArea”,”对应具体的参数值”);
User user=xxx. selectUser(paramMap);}

个人认为此方法不够直观,见到接口方法不能直接的知道要传的参数是什么。

第三种方案

Dao层的函数方法

Public User selectUser(@param(“userName”)Stringname,@param(“userArea”)String area);

对应的Mapper.xml

<select id=" selectUser" resultMap="BaseResultMap">
   select  *  from user_user_t   where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
</select> 

个人觉得这种方法比较好,能让开发者看到dao层方法就知道该传什么样的参数,比较直观,个人推荐用此种方案。

 

第四种方案

Dao层的底层封装

public interface DAO {
  /**
   * 查找对象
   * @param str
   * @param obj
   * @return
   * @throws Exception
   */
  public Object findForObject(String str, Object obj) throws Exception;
}

逻辑延伸:

@Repository("daoSupport")
public class DaoSupport implements DAO {
  @Resource(name = "sqlSessionTemplate")
  private SqlSessionTemplate sqlSessionTemplate;
  /**
   * 查找对象
   * @param str
   * @param obj
   * @return
   * @throws Exception
   */
  public Object findForObject(String str, Object obj) throws Exception {
    return sqlSessionTemplate.selectOne(str, obj);
  }
}

service逻辑层:

public Menu getMenuById(Integer id) throws Exception {
    return (Menu) dao.findForObject("MenuMapper.getMenuById", id);
}

xml实现:

<!--通过菜单ID获取数据 -->
  <select id="getMenuById" parameterType="Integer" resultType="menuResultMap">
    select  
      <include refid="Field"></include>
     from 
      <include refid="tableName"></include>
     where MENU_ID=#{MENU_ID}
  </select>
目录
相关文章
|
7月前
|
XML SQL Java
Mybatis 传参方式
多个参数,那也就是使用注解@Param取名字解决即可。
40 1
|
Java 数据库连接 mybatis
MyBatis参数传递
MyBatis参数传递
69 0
|
SQL XML Java
Mybatis传参类型如何确定?
最近有小伙伴在讨论#{}与${}的区别时,有提到#{}是用字符串进行替换,就我个人的理解,它的主要作用是占位,最终替换的结果并不一定是字符串方式,比如我们传参类型是整形时,最终拼接的sql,传参讲道理也应该是整形,而不是字符串的方式 接下来我们来看一下,mapper接口中不同的参数类型,最终拼接sql中是如何进行替换的
498 0
Mybatis传参类型如何确定?
|
SQL Java 数据库连接
【Mybatis】常见面试题:Mybatis获取参数值的两种方式?
【Mybatis】常见面试题:Mybatis获取参数值的两种方式?
|
XML SQL Java
Mybatis的几种传参方式,你了解多少?
Mybatis的几种传参方式,你了解多少?
|
XML SQL Java
mybatis学习(24):分页2 多参数传递(使用注解)
mybatis学习(24):分页2 多参数传递(使用注解)
106 0
mybatis学习(24):分页2 多参数传递(使用注解)
|
SQL Java 数据库连接
【SSM框架】MyBatis获取参数值的方式
1.单个字面量类型的参数 2.多个字面量类型的参数 3.map集合类型的参数 4.实体类类型的参数 5.使用@Param标识参数
【SSM框架】MyBatis获取参数值的方式
|
SQL Java 数据库连接
MyBatis动态SQL的List传值错误
MyBatis动态SQL的List传值错误
169 0
|
Java 数据库连接 mybatis
Mybatis参数传递
Mybatis参数传递
87 0
Mybatis参数传递