您现在的位置是:首页 > 个人日记个人日记

xml配置mybatis映射注意事项

2019-02-03 18:37:02【个人日记】83人已围观

简介需要注意的配置信息

xml中转义字符应使用HTML中的

<![CDATA[

这里面所有字符原样输出

]]>

只能放value的情况仅限于基本数据类型

  1. <!--${只能放value}-->
  2. <!--使用${}可能会有sql注入-->
  3. <!--使用"%"#{*}"#"也可以-->
  4. <select id="findByCategoryName" parameterType="java.lang.String" resultType="com.huangxin.model.ProductCategory">
  5. SELECT * FROM product WHERE supplier LIKE '%${value}%'
  6. </select>

这种情况可以使用其他

  1. <!--多条件查询-->
  2. <select id="find" parameterType="java.util.Map" resultType="com.huangxin.model.ProductCategory">
  3. SELECT * FROM product WHERE supplier LIKE '%${brand}%' AND id <![CDATA[< #{id}]]><!--原样输出-->
  4. </select>

在调试中这样写

  1. Map<String, Object> map = new HashMap<String, Object>();
  2. map.put("brand", "未知");
  3. map.put("id", 5);
  4. SqlSession sqlSession = factory.openSession();
  5. //通过mybatis的动态代理机制,生成了一个ProductCategory接口实现类
  6. ProductCategoryMapper mapper = sqlSession.getMapper(ProductCategoryMapper.class);
  7. System.out.println(mapper.find(map));

xml中${}或#{}中的参数值应和Map中的参数值对应

Mapper.Java接口中应注意形参只能传入一个,如果多个应使用Map等类型

  1. package com.huangxin.mapper;
  2. import com.huangxin.model.ProductCategory;
  3. import java.util.List;
  4. import java.util.Map;
  5. public interface ProductCategoryMapper {
  6. /**
  7. * 多条件查询
  8. *
  9. * @param map
  10. */
  11. List<ProductCategory> find(Map<String, Object> map);
  12. /**
  13. * 根据id删除信息
  14. *
  15. * @param id
  16. */
  17. void deleteById(Long id);
  18. /**
  19. * 通过ProductCategory对象插入信息
  20. *
  21. * @param productCategory
  22. */
  23. void insert(ProductCategory productCategory);
  24. /**
  25. * 更改商品信息
  26. *
  27. * @param productCategory
  28. */
  29. void update(ProductCategory productCategory);
  30. /**
  31. * 查询所有商品信息
  32. *
  33. * @return
  34. */
  35. List<ProductCategory> getAll();
  36. /**
  37. * 根据id查询信息
  38. *
  39. * @param id
  40. */
  41. ProductCategory getById(Long id);
  42. /**
  43. * 模糊查询
  44. *
  45. * @param categoryName
  46. * @return
  47. */
  48. List<ProductCategory> findByCategoryName(String categoryName);
  49. }

以上可以反映出形参唯一,多个参数会报错

如果属性名与数据库列名不一样则配置以下属性,如果一样直接用*表示

配置Mapper.xml文件

  1. <!--Java对象的类型-->
  2. <resultMap id="名称随意" type="需要与数据库映射的model对象">
  3. <!--id为主键,result为普通列名称-->
  4. <id column="数据库列的名称" property="对象属性的名称"></id>
  5. <result column="普通列的名称" property="对象属性的名称"></result>
  6. </resultMap>
  7. <!--多条件查询-->
  8. <select id="find" parameterType="java.util.Map" resultMap="跟上面resultMap名称">
  9. SELECT * FROM product WHERE supplier LIKE '%${brand}%' AND id <![CDATA[< #{id}]]><!--原样输出-->
  10. </select>

Tags: JavaWeb  

评论区

    2019-10-22 19:30:02

    站长

    欢迎各位评论!


文章评论



给自个选个头像吧!






站点信息

  • 建站时间:   2019-01-31
  • 网站程序:   Tomcat+nginx
  • 文章统计:   44篇文章
  • 标签管理:   标签云
  • 微信公众号:  扫描二维码,联系我