MyBatis快速入门

1. 持久化概念:

1.1. 持久化是程序数据在瞬时状态和持久状态间转换的过程

2. ORM概念

2.1. Object Relational Mapping 对象关系映射

2.2. 数据在程序中以对象的形式被操作,例如User user=new User(1,”jack”);

2.3. 数据在数据库以一行记录的形式被保存,例如

编号

姓名

1

Jack

 

2.4. 两种形式通过某种框架进行切换

3. Mybatis框架的特点

3.1. 基于SQL语法,能了解底层封装过程,程序员编码的自由度较高

3.2. SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度

4. Mybatis框架的劣势

4.1. 针对不同数据库的兼容性不高,程序可移植的程度不够高

5. 搭建mybatis环境的步骤

5.1. 下载mybatis-3.2.2.jar包并导入工程

 

5.2. 编写MyBatis核心配置文件(mybatis-config.xml存放在类路径下)

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!-- 加载数据库资源文件 -->

<properties resource="jdbc.properties">

 

</properties>

 

<!-- 设置数据库运行环境 -->

<environments default="development">

<environment id="development">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<!-- ${ } 从资源文件jdbc.properties中根据键获取对应的值 -->

<property name="driver" value="${driver}" />

<property name="url" value="${url}" />

<property name="username" value="${uname}" />

<property name="password" value="${upwd}" />

</dataSource>

</environment>

</environments>

 

<!-- 加载所有针对接口的映射文件 -->

<mappers>

<mapper resource="com/mapper/EmpMapper.xml" />

</mappers>

</configuration>

5.3. 创建实体类-POJO

5.4. DAO层接口

5.5. 针对DAO层接口的SQL映射文件(EmpMapper.xml存放在单独的包下)

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace 当前映射文件所针对的接口全称 -->

<mapper namespace="com.dao.EmpDao">

 

<!-- insert节点:实现插入操作接口方法

id 接口方法名

parameterType 接口方法的参数类型

 

#{ } 以参数Emp对象的属性名获取属性值,给sql语句赋值

-->

<insert id="addEmp" parameterType="com.entity.Emp" >

insert into emp values

(seq_emp.nextval,#{ename},#{job},#{hiredate},#{sal},#{comm},#{deptid})

</insert>

 

</mapper>

5.6. 创建测试类

//加载mybatis配置文件

InputStream is=Resources.getResourceAsStream("mybatis-config.xml");

 

 

 

//创建SqlSessionFactory对象:为了创建SqlSession

SqlSessionFactory sf=new SqlSessionFactoryBuilder().build(is);

 

//根据SqlSessionFactory对象创建SQLSession对象:进行数据库操作

SqlSession session=sf.openSession();

//根据接口信息和对应的映射文件,动态生成接口实现类的对象

EmpDao ed= session.getMapper(EmpDao.class);

 

int i=ed.addEmp(new Emp("jerry","coder",new Date(),9999.9d,8888.8d,1));

//增删改操作需要手动提交

session.commit();

 

System.out.println(i);

6. Mybatis的核心对象

6.1. SqlSessionFactoryBuilder 数据库会话工厂创建者对象,创建会话工厂对象

6.2. SqlSessionFactory 数据库会话工厂对象,生成多个SqlSession对象

6.3. SqlSession 数据库操作对象

7. Mybatis-config.xml 配置项目的数据源,项目常规配置(给实体类或包命别名,设置自动映射行为...),加载所有接口映射文件XxxMapper.xml

8. XxxMapper.xml 通过配置方式实现接口方法

9. mybatis核心对象的生命周期

9.1. SqlSessionFactoryBuilder  

9.1.1. 用过即丢,其生命周期只存在于方法体内

9.1.2.  可重用其来创建多个 SqlSessionFactory 实例

9.1.3.  负责构建SqlSessionFactory,并提供多个build方法的重载

9.2. SqlSessionFactory

9.2.1. 作用域:Application,生命周期与应用程序的生命周期相同

9.2.2.  单例:存在于整个应用运行时,并且同时只存在一个对象实例

9.3. SqlSession

9.3.1. 对应一次数据库会话,会话结束必须关闭

9.3.2.  线程级别,不能共享

10. Mybatis-config.xml常用配置

10.1. Properties

<properties resource="database.properties">

<property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms"/>

<property name="user" value="root"/>

<property name="password" value="root"/>

</properties>

resource属性值的优先级高于property子节点配置的值,加载资源文件的数据优先于之后通过property 节点赋值

 

 

 

10.2. autoMappingBehavior

10.2.1. NONE 关闭自动映射实体类的属性与列名的对应

10.2.2. PARTIAL 默认方式:根据实体类属性名与列名的一致关系,将数据自动赋值给对象属性,如果属性名与列名不一致,则该属性值为空

10.2.3. FULL 支持实体类拥有对象类型的属性,例如User类中包含Address属性,则可以将查询结果映射到子对象的属性中

10.3. typeAliases

 

<typeAliases>

<!-- 给实体类命别名,在XxxMapper.xml中涉及到实体类名称时,只需写别名 -->

<!-- <typeAlias type="com.entity.Emp" alias="Emp" /> -->

<!-- 给包名命别名 -->

<package name="com.entity"/>

</typeAliases>

 

10.4. Mappers

<!-- 加载所有针对接口的映射文件 -->

<mappers>

<mapper resource="com/mapper/EmpMapper.xml" />

</mappers>

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值