------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

简单概述一下本讲

别名,sql片段简单写一下,模糊查询多写一点

一。别名

  

<typeAliases>
<!--第一种-->
<!--<typeAlias type="cn.dawn.demo01.entity.Book" alias="book"></typeAlias>-->
<!--第二种-->
<package name="cn.dawn.demo01.entity"></package>
</typeAliases>

  别名写在大配置中

二。sql片段

   在开发过程中一般不直接使用*作为sql的查询语句的列,因为会损耗性能严重,在多次,重复使用列名,但是列名太多,所以很麻烦,怎么解决?

  sql片段

  怎么使用?

  如下:

<sql id="mysql">
bookId,bookName,bookAuthor,bookPrice
</sql>
<select id="findOneBookByPK" resultType="Book" >
SELECT <include refid="mysql"/> FROM book WHERE bookid=#{bookID}
</select>

  用include将sql片段中的列名引用过去

三。模糊查询

  dao层

  

//模糊查询
public List<Book> likeSelect(String bookName);

  小配置中

<sql id="mysql">
bookId,bookName,bookAuthor,bookPrice
</sql>
<!--模糊查询-->
<!--不可以防止sql注入
<select id="likeSelect" parameterType="string" resultType="Book">
SELECT * FROM book WHERE bookName LIKE '%${value}%'
</select>-->
<!--可以防止sql注入
<select id="likeSelect" parameterType="string" resultType="Book">
SELECT * FROM book WHERE bookName LIKE '%' #{value} '%'
</select>-->
<!--可以防止sql注入-->
<select id="likeSelect" parameterType="string" resultType="Book">
SELECT <include refid="mysql"/> FROM book WHERE bookName LIKE concat('%',#{bookName},'%')
</select>

  三种方式,第一种不可以防止sql注入(做完日志整合的从控制台就可以看到sql语句),我所喜欢的是第二种

  测试类中

//模糊查询
@Test
public void t6likeSelect(){ String path = "mybatis-config.xml"; try {
InputStream e = Resources.getResourceAsStream(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(e);
SqlSession session = factory.openSession(); IBookDAO mapper = session.getMapper(IBookDAO.class);
List<Book> list = mapper.likeSelect("的");
for (Book item:list) {
System.out.println(item.getBookName());
} session.close();
} catch (IOException var9) {
var9.printStackTrace();
}
}

  这儿模糊查询就搞定了,说说getMapper吧,

  之前我那几篇博客,用的原始方式,他要求自己测试类中手打方法,但是现在这种通过session.getMapper(dao层接口.class)反射的方式获取到了dao层这个接口的实现类,所以就可以使用强类型

的方式,直接通过点的方式点出来供你选择,出错几率大大减少      例如mapper.findAll()

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper的更多相关文章

  1. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  2. [转]在Excel中使用SQL语句实现精确查询

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  3. 避免SQL全表模糊查询查询 下载文件时-修改文件名字

    避免SQL全表模糊查询查询   1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like %...%(全模糊)这样的条件,是无法使用索引的,全表扫描自然效 ...

  4. django中多个字段的模糊查询

    django中多个字段的模糊查询 使用Entity.objects.filter(name_contains='kris').filter(address='beijing') 这个方法是指名字包含k ...

  5. neo4j中cypher语句多个模糊查询

    总结一下经验: neo4j中,cypher语句的模糊查询,好像是个正则表达式结构. 对于一个属性的多个模糊查询,可以使用如下写法: 比如,查询N类型中,属性attr包含'a1'或者'a2'的所有节点. ...

  6. mybatis动态SQL中的sql片段

    在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)< ...

  7. mybatis 05: mybatis中的动态代理

    mybatis中动态代理存在的意义 图示 图示分析 分层说明:界面层为第一层,业务逻辑层(接口层 + 实现层)为第二层,数据访问层(接口层 + 实现层)为第三层 业务逻辑层和数据访问层:分别分两层来开 ...

  8. 关于mybatis中sql映射文件模糊查询的使用

    1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...

  9. 持久层之 MyBatis: 第二篇 :动态SQL And多表查询

    MyBatis入门到精通 完整CRUD UserDaoImpl 编写UserDao对应的UserDaoMapper.xml 添加UserDao的测试用例 编写UserDao的测试用例 解决数据库字段名 ...

随机推荐

  1. ITU-T Technical Paper: QoS 测量 (目标,方法,协议)

    本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...

  2. linux服务搭建---yum源服务搭建

    yum源服务 1.本地yum源 2.yum源不在本地          1>  ftp服务器     2>  nfs服务器 1.本地yum源 前提:    linux系统   找到一个相应 ...

  3. LeetCode之“字符串”:最短回文子串

    题目链接 题目要求: Given a string S, you are allowed to convert it to a palindrome by adding characters in f ...

  4. 在 Vim 中设置 Tab 为4个空格

    缩进用 tab 制表符还是空格,这不是个问题,就像 python 用四个空格来缩进一样,这是要看个人喜好的.在 Vim 中可以很方便的根据不同的文件类型来设置使用 tab 制表符或者空格,还可以设置长 ...

  5. Linux - 设置Centos控制台模式的分辨率

    因为我的Centos是用VMware虚拟机安装的,所以这里和直接安装的Centos修改值不太一样. 修改文件: 注意是在启动的系统条目后面"quiet"字段的加上 vga=0x36 ...

  6. using MR to compute PageRank

    In this post I explain how to compute PageRank using the MapReduce approach to parallelization. This ...

  7. 自定义蜘蛛网图 NetView

    概述 写论文忙里偷闲写了一个蜘蛛网图的自定义view,支持多重属性 有图才能有真相,下面先上图 主要支持网格颜色.tag文本.覆盖区域颜色.透明度的属性改变,具体使用可以参见我的githubgithu ...

  8. rails应用ajax之一:使用纯js方法

    考虑如下需求: 1. 用户输入一个用户名,当焦点跳出文本框时,检查该用户名是否有效 2. 动态更新检查的结果 我们使用ajax的方式来实现这个简单的功能,首先建立view:check.html.erb ...

  9. javascript简单介绍(二)

    晨读单词: onmouseover:鼠标移入 onmouseout:鼠标移出 attribute:属性 node:节点 document:文档 element:元素 textNode:文本节点 app ...

  10. CSS3概述

    首先我们了解下什么是css3,css3是css技术的一个升级.css3中并没有采用总体结构,而是采用分工协作的模块化结构. css3中的模块 模块名称 功能描述 basic box model 定义各 ...