新手上路#3
**
一、MyBatis框架概述
1.MyBatis是一个持久层框架(DAO框架),是对JDBC的封装,使得开发者只需要关注
SQL语句(业务)本身即可,无需开发者处理加载驱动、获取连接、创建Statement等繁琐的操作。
2.MyBatis最大的特点是把SQL语句卸载XML配置文件中。
3.MyBatis是一个实现类ORM思想的持久层框架
ORM(Object/Relation Mapping)对象/关系映射:
将数据库中的关系数据表映射为java中的对象,吧对数据表的操作转换为对对象的操作,实现面向对象编程。
%总结%:MyBatis框架是一个半自动的ORM持久层框架,可以在java中实现以面向对象的方式操作数据库,但是需要我们自己编写SQL语句。
**
二、MyBatis配置
mybatis-cofigxml配置
1.放在src下
<configuration>
<environments>
<enviroment>
<transactionManager>
<dataSource>
<property>
<mappers>
2.设置类的别名
TypeAliases标签
3.mappers标签
用来注册SQL映射文件
xxxMapper.xml
id 值唯一,用来标识唯一的sql语句 使用时,建议和namespace的值组合 例如:test.id resultType:结果集封装的类型
parameterType:参数的数据类型
SQL语句中的取参数语法:#{基本类型 任意命名}
resultMap:
(1).当数据表列名和类中属性名不一致时,Mybatis无法自动配置,需要手动配置映射(给字段起别名)
模糊查询#{}和 $ {}的方式
1.使用#{}得原理是占位符,而$ 的原理为字符串拼接的方式。使用#{}可以防止sql注入。
2.如果使用${}时,传入的参数是引用类型,那么 $ {对象的属性名}。
3.能使用#就不使用$。
三、动态代理Dao开发方式
1.定义一个Mapper接口,这个接口其实和我们定义的Dao接口是一样的,从Mybatis框架中拿到一个代理
对象(代理的是这个Mapper接口),通过代理对象调用接口中的方法完成业务。
2.Mapper动态dao开发遵循的规范
SQL映射文件的namespac鼻血和Mapper接口的全限定类名完全一致;
mapper接口中方法名必须和XML中SQL语句的id保持一致;
mapper接口中方法的参数类型必须和SQL语句的parameterType类型保持一致;
mapper接口中方法返回值必须和SQL语句的resultType类型保持一致
**
四、动态SQL
1.什么是动态SQL
(1).动态SQL极大的简化了SQL语句的拼装操作。
(2).动态SQL元素和使用JSTL或其他类似XML的标签类似。
(3).动态SQL就是通过一系列的标签运算来完成判断,进行SQL语句的拼装。
2.where标签,处理SQL语句,自动添加where关键字,并去掉紧跟它后面的一个and或者or;
if标签,test属性,判断表达式真假。
<mapper namespace="com.wojia.mapper.UsersMapper">
<select id="findUser" resultType="users" parameterType="users"> SELECT * FROM t_user
<where>
<if test="id!=0">
or id=#{id}
</if>
<if