1. #{} 与${}的区别
#{}返回的是一个字符串,返回值为 "字符串"
${}返回的是一个字符流,返回值为 字符流,没有""
举个例子:
//Mapper中的对应方法
public boolean InsertIntoArtical(ArticalComment articalComment);
insert into ${tableName}(artical_ID)
values(#{articalID})
假设这个ArticalComment对象为
tableName = Artical;
articalID = 9527;
这个mapper实际执行的语句是
insert into Artical (artical_ID)
values(9527)
假设上述mapper中的${tableName}改为 #{tableName},此时执行语句为
insert into 'Artical' (artical_ID)
values(9527)
2.mybatis传递多个多种类型的参数
上图中两个参数类型不一致,且是动态sql语句必须用到的两个属性,tableName为数据库表明,后者为需要插入的数据。
使用paraterType(包名+实体类名)。具体参考1中的mapper。
3.mybatis执行复杂事件,诸如建表之类无法使用注解方式完成的事件。
举个例子
create table ${tableName} (
ID int (11) primary key auto increment,
friend_ID int (11) not null ,
FOREIGN KEY (friend_ID) REFERENCES Userinfo (ID)
)
mybatis执行DDL语句 将全部使用update标签。
之后可能还有很多mybatis问题,再接着补充就是。
2020/3/3 第一次编写