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.

0 0
原创粉丝点击