#{}:底层使用PreparedStatement 特点:先进行SQL语句的编译,然后给SQL语句的占位符?赋值,带' ',可以避免SQL注入的风险
${}:底层使用Statement,特点:先进行SQL语句的拼接,然后再编译,有SQL注入的风险
如果需要SQL语句关键字放到SQL语句中,只能使用${}
模糊查询
like concat('%',#{brand},'%')
like "%"#{brand}"%"
在<typeAliases>标签中的
<typeAlias type="指定给哪个类起别名" alias="别名"/>,可以省略,省略后就是类的简名
namespace不能使用别名机制
mybatis-config.xml中的mappers标签中的属性可以有三个:
resource:从类的根路径下开始加载资源
class:这个位置提供的是mapper接口的全限定接口名,必须带有包名的
如果指定的是a.b.c.d.e,那么就会自动去该目录下去找a.b.c.d的e.xml文件
运用这种方法把xml放在和mapper同一个包下,即resources里的目录和java中的目录相同。原理是java和resources都为根目录,其实是放在一起的
也可以在mybatis-config中<mappers>标签下直接指定<package name="xxx"/>
获取主键值
在<insert>中
useGeneratedKeys=“true” keyProperty=“id”
表示放在传参对象的id属性中
简单的可以使用注解式开发
在方法名前加@Update,@Insert,@Delete
@Select 注解后可以加
@Results(
{
@Result(property="",column="")
}
)
以便映射数据库及pojo类属性