SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
简单概述一下本讲
别名,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的更多相关文章
- 在JDBC中实现SQL语句的模糊查询
在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...
- [转]在Excel中使用SQL语句实现精确查询
本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...
- 避免SQL全表模糊查询查询 下载文件时-修改文件名字
避免SQL全表模糊查询查询 1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like %...%(全模糊)这样的条件,是无法使用索引的,全表扫描自然效 ...
- django中多个字段的模糊查询
django中多个字段的模糊查询 使用Entity.objects.filter(name_contains='kris').filter(address='beijing') 这个方法是指名字包含k ...
- neo4j中cypher语句多个模糊查询
总结一下经验: neo4j中,cypher语句的模糊查询,好像是个正则表达式结构. 对于一个属性的多个模糊查询,可以使用如下写法: 比如,查询N类型中,属性attr包含'a1'或者'a2'的所有节点. ...
- mybatis动态SQL中的sql片段
在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)< ...
- mybatis 05: mybatis中的动态代理
mybatis中动态代理存在的意义 图示 图示分析 分层说明:界面层为第一层,业务逻辑层(接口层 + 实现层)为第二层,数据访问层(接口层 + 实现层)为第三层 业务逻辑层和数据访问层:分别分两层来开 ...
- 关于mybatis中sql映射文件模糊查询的使用
1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...
- 持久层之 MyBatis: 第二篇 :动态SQL And多表查询
MyBatis入门到精通 完整CRUD UserDaoImpl 编写UserDao对应的UserDaoMapper.xml 添加UserDao的测试用例 编写UserDao的测试用例 解决数据库字段名 ...
随机推荐
- #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲
又到周五,这一周博主我工作效率极高,每天更新博客一篇,<快速创建网站>系列已经进程大半了,希望这个系列能够对大家有所帮助.今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么. ...
- SpriteBuilder修改CCB文件中的子CCB文件需要注意的一个地方
在SpriteBuilder中如果一个CCB(比如一个场景)中嵌入了另一个子CCB文件(比如一个player),那么当给该子CCB中的root对象添加若干属性的时候,必须注意到这个并没有应用到父CCB ...
- Oracle UTL_HTTP(收集汇总有用资料)
From Oracle The UTL_HTTP package makes Hypertext Transfer Protocol (HTTP) callouts from SQL and PL/S ...
- Linux下进程通信方式(简要概述)
http://blog.sina.com.cn/s/blog_65c209580100u0ee.html (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先 ...
- Leetcode_252_Implement Stack using Queues
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/48598773 Implement the followin ...
- PS 滤镜——扩散特效, 毛玻璃 效果
%%% Diffuse %%% 扩散效果 clc; clear all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algori ...
- Hbase问题
Q: .meta.和root表是否要分裂? A: meta表和root表不会分裂,代码中有所判断. Q: 如果不分裂,那么都只有1个region? A: ... (查看代码后)A: meta和root ...
- The 15th tip of DB Query Analyzer
The 15th tip of DB Query Analyzer ---- SQL Execute Schedule function is realized in 6.01 Ma Gen ...
- python下实现二叉堆以及堆排序
python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...
- Core Animation简介
一.Core Animation简介 * Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代 ...