MybatisCT——(二)
来源:互联网 发布:啪嗒砰3召唤奇迹数据 编辑:程序博客网 时间:2024/05/22 16:36
1.Mybatis比IBatis比较大的几个改进是什么
a.有接口绑定,包括注解绑定sql和xml绑定Sql ,
b.动态sql由原来的节点配置变成OGNL表达式,
c. 在一对一,一对多的时候引进了association,在一对多的时候引入了collection
节点,不过都是在resultMap里面配置
2.什么是MyBatis的接口绑定,有什么好处
接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,
我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置.
3.接口绑定有几种实现方式,分别是怎么实现的?
接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上
@Select@Update等注解里面包含Sql语句来绑定,另外一种就是通过xml里面写SQL来绑定,
在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名.
4.什么情况下用注解绑定,什么情况下用xml绑定
当Sql语句比较简单时候,用注解绑定,
当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多
5.MyBatis实现一对一有几种方式?具体怎么操作的
有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,
通过在resultMap里面配置association节点配置一对一的类就可以完成;
嵌套查询是先查一个表,根据这个表里面 的结果的外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表 的查询通过select属性配置
6.MyBatis实现一对多有几种方式,怎么操作的
有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在resultMap里面配
置collection节点配置一对多的类就可以完成;
嵌套查询是先查一个表,根据这个表里面的 结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的 查询通过select节点配置
2、 要使用like语句该怎么写? 有两种使用like的方法。(推荐使用)第一种方法是,在Java代码中添加sql通配符。
示例一:
01.string wildcardname = “%smi%”;
02.list names = mapper.selectlike(wildcardname);
01.
02. select * from foo where bar like #{value}
03.
第二种方式是在sql语句中拼接通配符。
这种方法相对来说安全性要低一些,因为可能会被sql注入攻击。
示例二:
01.string wildcardname = “smi”;
02.list names = mapper.selectlike(wildcardname);
01.
02. select * from foo where bar like ‘%’ || ‘${value}’ || ‘%’
03.
重要提示: 请注意两种方式中 $ 和 # 的使用!
3、如何执行批量插入?
首先,创建一个简单的insert语句:
01.
02. insert into names (name) values (#{value})
03.
然后在java代码中像下面这样执行批处理插入:
01.list names = new arraylist();
02.names.add(“fred”);
03.names.add(“barney”);
04.names.add(“betty”);
05.names.add(“wilma”);
06.
07.// 注意这里 executortype.batch
08.sqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch);
09.try {
10. namemapper mapper = sqlsession.getmapper(namemapper.class);
11. for (string name : names) {
12. mapper.insertname(name);
13. }
14. sqlsession.commit();
15.} finally {
16. sqlsession.close();
17.}
5、在mapper中如何传递多个参数?
java的反射机制并不能让框架获取到参数的名字(方法签名中只有参数类型,
可以说是为了优化,也可以说设计就是如此,总之名字无意义), 所以mybatis默认的命名为: param1,param2……
如果想给他们指定名称,可以使用 @param 注解:
01.import org.apache.ibatis.annotations.param;
02.public interface usermapper {
03. user selectuser(@param(“username”) string username,
04. @param(“hashedpassword”) string hashedpassword);
05.}
然后,就可以在xml像下面这样使用(推荐封装为一个map,作为单个参数传递给mapper):
01.
02. select id, username, hashedpassword
03. from some_table
04. where username = #{username}
05. and hashedpassword = #{hashedpassword}
06.
- MybatisCT——(二)
- JavaScript FAQ(二)——常见问题(二)
- 软件工程 工具之二—— PowerDesigner v12(二)
- Lucene.Net 开发介绍 —— 二、分词(二)
- HEVC学习(二十八) —— 量化之二
- Kotlin学习笔记(二)——示例篇二
- SpringSecurity学习笔记(二)——访问数据库(二)
- PDF — — (二)
- svm——(二)
- 数据结构—链表(二)
- 语料库————(二)
- 故事——回忆连载(二)
- 心情(二)——出差记
- 系统启动——Grub篇(二)
- 解决问题(二)——Log4j
- 知识积累(二)——native2ascii
- Socket服务(源码)——二
- php——数据类型(二)
- 闭合函数
- 集群概念以及介绍
- 循环神经网络RNN及其变种LSTM
- L1-033. 出生年
- 准确率Accuracy,精确度Precision,召回率Recall,F1值
- MybatisCT——(二)
- Fliptile POJ
- python学习参考及环境配置
- EventBus3.0详解
- Java复习——对象数组
- [leetcode]-543. Diameter of Binary Tree
- Android 获取当前系统语言及地区,并更改语言
- 50. Pow(x, n)
- STM32学习之路:第十三天