mybatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。
目录
mybatis中$和#的区别?
a、#{}是预编译处理,${}是字符串替换
b、#{}能防止SQL注入
c、#{}相当于占位符,${}替换成变量的值
d、$方式一般用于传入数据库对象,例如传入表名。MyBatis排序时使用order by 动态参数时需要注意,用$。
mybatis的一对一和一对多关系配置
<resultMap>
<!-- 定义User里面Role对象的映射方式,这里假定为一个User对应一个Role-->
<association property="role" javaType="com.hj.pojo.Role">
<id property="roleId" column="role_id" />
<result property="name" column="rname" />
<result property="state" column="state" />
</association>
<!-- 定义User里面Role集合的映射方式,这里一个User对应多个Role-->
<collection property="roles" ofType="com.hj.pojo.Role">
<id property="roleId" column="role_id" />
<result property="name" column="rname" />
<result property="state" column="state" />
</collection>
</resultMap>
Mybatics批量插入
<insert id="insertBatch">
<foreach collection ="list" item="user" >
INSERT INTO t_user (id, name, del_flag)
VALUES (#{user.id}, #{user.name}, #{user.delFlag})
</foreach >
</insert>
Mybatis的执行原理
- 读取Mybatis配置文件
- 加载映射文件
- 构造会话工厂 sqlsessionFactory
- 创建会话对象 sqlsession
- Executor 执行器。
- 底层封装对象(输入参数类型,pojo)(输出参数类型,pojo)
- 操作Mysql