mybatis 的运用
1.mybatis的了解
1.1 mybatis是ORM持久层框架,MyBatis是针对数据库交互的一个辅助框架,也是对jdbc做了的简单封装,以xml配置代替Java代码来管理数据库的交互细节.
1.2 MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.
2.mybatis的映射器
2.1 SpringAOP 面向切面编程 --底层代理模式(额外产出一些子类)
MyBatis基于动态代理机制,让我们无需再编写Dao的实现。
传统Dao接口,现在名称统一以Mapper结尾,还有我们映射器配置文件要和映射器在同一个包.
IDeptDao---->DeptMapper.java—DeptMapper.xml(namespace直接写DeptMapper.java的全限定名)
2.2高级查询
2.2.1 like(模糊查询) 使用concat
<if test="name!=null">
and name like concat('%',#{name},'%')
</if>
2.2.2 注意转义符的运用
方案1:转义符号
<if test="maxSalePrice != null">
<!--and saleprice <= #{maxSalePrice}
</if>
方案2:cdata 的区域编译的时候便不会读取
xml
<![CDATA[
and saleprice <= #{maxSalePrice}
]]>
3.mybatis的嵌套结果 嵌套查询
3.1 多对一的 嵌套结果 嵌套查询
嵌套查询和嵌套结果
<mapper namespace="cn.itsource._06_manytoone1.EmployeeMapper">
嵌套结果
<!--<resultMap id="employeeMap" type="employee">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<result property="age" column="age"></result>
<association property="department" javaType="Department">
<id property="id" column="did"></id>
<result property="name" column="dname"></result>
</association>
</resultMap>
<select id="findAll" resultMap="employeeMap">
SELECT
e.id,
e. NAME,
e.age,
d.id did,
d. NAME dname
FROM
t_employee e
JOIN t_department d ON e.did = d.id
</select>-->
嵌套查询
<resultMap id="employeeMap" type="employee">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<result property="age" column="age"></result>
<association property="department" javaType="Department" column="did" select="findDeptById">
</association>
</resultMap>
<select id="findAll" resultMap="employeeMap">
SELECT
e.id,
e. NAME,
e.age,
e.did
FROM
t_employee e
</select>
<select id="findDeptById" parameterType="long"