简介
MyBatis基于Java持久层的框架,内部封装了jdbc。通过配置xml或者注解的方式将各种statement配置起来,并通过java对象和statement的sql动态参数最终生成sql执行语句。最后执行sql语句将结果分装为java对象返回。
快速入门
1.添加MyBatis坐标
2.创建user数据表
3.创建user实体类 click in
4.编写 映射文件usermapper.xml
5.编写 核心文件sqlmapconfig.xml
配置文件顺序
configuration 配置
— properties 属性
可以外部配置且可以动态替换
<properties resource="jdbc.properties" >
<property name="username" value="dev_user" value="${driver}"/>
</properties>
--- settings 设置
--- typeAliases 类型别名
为java类型设置的设置的一个短名字,减少类的完全限定名的冗余
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
</typeAliases>
<typeAliases>
<package name="domain.blog"/>
</typeAliases>
--- typeHandlers 类型处理器
--- objectFactory 对象工厂
--- plugins 插件
--- environments 环境
--- environment 环境变量
--- transactionManager 事务管理器
--- dataSource 数据源
--- databaseIdProvider 数据库厂商标识
--- mappers 映射器
加载映射文件的
<!--
使用映射器接口实现类的完全限定类名
此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中
-->
<mappers>
<mapper class="org.mybatis.builder.UserMapper"/>
......
</mappers>
<!--
将包内的映射器接口实现全部注册为映射器
此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中
-->
<mappers>
<package name="org.mybatis.builder"/>
......
</mappers>
动态sql
if判断
<if test="id!=0">
and id=#{id}
</if>
choose
SELECT * FROM user WHERE 1=1
<choose>
<when test="id != null and id >0">
AND id = #{id}
</when>
<when test="username != null and username != '' ">
AND username like #{username}
</when>
<otherwise>
AND password is not null
</otherwise>
</choose>
when若开头元素为and或者or,where会自动去除
select * from User
<where>
<if test="id!=0">
and id=#{id}
</if>
<if test="username!=null">
and username=#{username}
</if>
</where>
set动态更新语句 会舍去最后的‘,’
update user
<set>
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
</set>
where id=#{id}