Mybatis

来源:互联网 发布:医药销售数据分析 编辑:程序博客网 时间:2024/05/23 02:03

Mybatis是apache的一个开源项目iBatis,

Mybatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装。


Mybatis的作用

Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集

JDBC问题总结

a,数据库连接频繁创建和释放浪费性能

b,sql语句和手动设置参数,获取结果集,硬编码在代码中不方便维护


Mybatis与Hibernate的区别:

mybatis是一个半自动化的orm持久层框架

Hibernate是全自动化的orm持久层框架

1 Hibernate比mybaitis的编码要简单一点

2 mybatis学习成本比较低

3 Hibernate可以跨数据库  mybatis不可以。


namespace 命名空间 是用来隔离sql

id:sql的唯一标识符

parameterType: 指定参数类型

基础类型:当#{}和${}的总数量等于一个的时候,使用基本数据类型

pojo类型:   当#{}和${}的总数量大于一个的时候,始于on个pojo类型


resultType:结果集类型

list:: 如果返回集合类型,那么指定集合的泛型里面的类型,因为返回集合,可以调用selectList方法

那么Mybatis,就知道要返回一个list,但是Mybatis不知道集合泛型里面的类型


#{} : 占位符,跟jdbc的?一样 起到占位的作用

如果parameterType 是基础类型,那么#{}里面的变量可以是任意名称

如果parameterType是pojo类型,那么#{}里面的变量鼻息是属性名称

${} 拼接符 起到sql语句原样拼接的作用, 基本上like的时候使用拼接符

如果parameterType 是基础类型,那么${}里面的变量必须是value

如果parameterType 是pojo类型, 那么${} 里面的变量必须是属性名称

<select id="findUserById" parameterType="int" resultType="cn.itcast.pojo.User">
select * from user where id=#{id}
</select>

<select id="findUserByUserName" parameterType="string" resultType="cn.itcast.pojo.User">
select * from user where username like '%${value}%'
</select>


LAST_INSERT_ID(),必须跟insert语句在同一个事务隔离 才能查询到最后一个增加的id

keyProperty:指定主键的属性名称,查询出来的id放到这个属性里面

resultType:  指定结果集的类型

order :指定LAST_INSERT_ID()  是在inser语句之前运行还是在最后运行,必须选择after

<insert id="insertUser" parameterType="cn.itcast.pojo.User" >
insert into user (username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>


typeAlias : 起别名

type:起别名的类型

alias: 别名 无大小写区分

package:批量起别名

别名: 就是类名


url:必须配置绝对路径

resource:相对路径

<mapper resource="User.xml"/>


class : 指定接口的全路径名称

规则1: 接口文件和映射文件必须在同一个包下

规则2:接口文件和映射文件必须名称想通,除了扩展名


package:批量扫描动态代理的接口和xml映射文件

规则1:接口文件和映射文件必须在同一个包下

规则2:接口文件和映射文件必须名称相同,除了扩展名

原创粉丝点击