mybatis mapper-locations的作用?
mapper接口与mapper接口对应的配置文件进行一个绑定 如果没有绑定会报错 无效的绑定语句 未
找到 配置扫描路径
classpath:mapper/*.xml
classpath就是resources *是通配符所有的xml文件
mybatis configuration log-impl 作用?
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
就可以将sql打印在控制台
resultType和resultMap的区别?
resultType只要数据库和实体类字段名一样就能查询到数据 但是如果字段名不一样 就会导致有些字段名为null 映射不上
resultMap可以解决数据库表的字段名和实体类属性名不一致的问题
参数 useGeneratedKeys ,keyColumn,keyProperty作用和用法
在使用mybatis的时候 我们插入数据 我们希望返回主键id 以便后面使用 正常情况是不可能返回的
我们必须要告诉mybatis 并不是返回的是主键 而是将主键的值写入到我们配置的keyProperty
<!-- useGeneratedKeys 插入后返回主键 keyColumn指定数据库主键 keyProperty指定在Java 实体类中对应的主键 --> <insert id="inertPojo" useGeneratedKeys="true" keyColumn="pojo_id" keyProperty="Pojo"> <!-- 或者直接不显示的写key(主键) --> insert into tb_pojo(key, param1, param2, ...) values (null, #{param1}, #{param2}, ...) </insert>
取值方式#和$区别
#传入的参数在SQL中显示为字符串,$传入的参数在SqL中直接显示为传入的值.
#方式能够很大程度防止sql注入,$方式无法防止Sql注入;
动态标签有哪些
MyBatis提供了9种动态SQL标签:trim、where、set、foreach、if、choose、when、otherwise、bind;
MyBatis常用注解有哪些
@Select 查询
@Insert 插入
@Update 修改
@Delete 删除
@Results和@Result 实体类和数据库字段名称不一样时 使用他们来隐射
@Options 添加属性useGeneratedKeys = true和keyProperty = "id"即可在数据添加后获取添加数据的ID值。
@ResultMap 注解就一个作用,使用已经定义好的@Results或XML配置里已经写好的resultMap。
@One,用于一对一的关系映射
@Many,用于一对多的关系映射
@SelectKey 返回自增id
注解里直接用动态标签为什么报错
要加上script标签 成为脚本sql
注解方式新增数据后如何回填主键ID值
使用@Options 添加属性useGeneratedKeys = true
和keyProperty = "id"
即可在数据添加后获取
添加数据的ID值。
同一个方法能否既用注解方式又用XML方式
不能 只能在注解和xml方式二选一