java回顾:MyBatis开发、配置、标签、封装会话工具

本文全面介绍了MyBatis框架,包括其介绍、优点、缺点和整体架构。深入探讨了MyBatis的ORM映射方式,并详细讲解了老式入门开发的步骤和动态代理的核心原理。同时,解析了mybatis-config.xml配置文件的各个关键元素,如properties、settings、typeAliases、environments和mappers。此外,还涵盖了MyBatis的增删改查操作和会话工具的使用。
摘要由CSDN通过智能技术生成

目录

1、Mybatis框架介绍

1.1 介绍

1.2 优点

1.3 缺点 

1.4 官方网站及框架包下载

1.5  mybatis框架整体架构

1.6  mybatis的ORM(Object Relational Mapping 对象关系映射 )方式 

2、 MyBatis老式入门开发(了解)

2.1 Mybatis框架的核心类

2.2 config.xml核心配置文件: 

2.3 mapper.xml映射文件:

2.4 log4j.properties配置文件:

2.5 测例及流程图:

2.6 使用mybatis老式的开发模式弊端

3、mybatis的dao层动态代理(掌握)

3.1 核心步骤

3.2 测:建接口UserMapper、绑定接口和映射文件、获取接口动态代理对象完成查询

3.3 在3.2基础上测试mybatis的dao层动态代理

3.4  mybatis的dao层动态代理查询-原理

3.5 mybatis动态代理小结

4、mybatis核心配置

4.1 properties(属性)定义全局变量

4.2 settings(设置)标签驼峰映射、延时加载

4.3 typeAliases标签类型别名

4.4 typeAliases标签内置别名

4.5 environments 标签配置环境

4.6 mappers 标签映射器

5、myBatis增删改测例

5.1 insert标签

5.2 update标签

5.3 delete标签

5.4 增删改查标签

5.5 mybatis.xml核心配置文件(完整标签示例)

6、mybatis会话工具


1、Mybatis框架介绍

1.1 介绍

mybatis框架是对JDBC进行封装,解决了dao层的问题。

    mybatis是Apache软件基金会下的一个开源项目,前身是iBatis框架。2010年这个项目由apache 软件基金会迁移到google code下,改名为mybatis。2013年11月又迁移到了github(GitHub 是一个面向开源及私有 软件项目的托管平台)。
    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射(多表)。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。它对 jdbc 的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建 connection、创建 statement、手动设置参数、结果集检索等 jdbc 繁杂的过程代码。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。  

1.2 优点

  1. 简单易学:mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个SQL映射文件即可。

  2. 使用灵活:Mybatis不会对应用程序或者数据库的现有设计强加任何影响。SQL语句写在XML里,便于统一管理和优化。

  3. 解除SQL与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易进行单元测试。SQL语句和代码的分离,提高了可维护性

1.3 缺点 

  1. 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

  2. SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

  3. Mybatis框架还是比较简陋(半自动化框架),功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是自己写,工作量比较大,且不太容易适应快速数据库修改。

1.4 官方网站及框架包下载

官网地址:mybatis – MyBatis 3 | Introduction

1.5  mybatis框架整体架构

1.6  mybatis的ORM(Object Relational Mapping 对象关系映射 )方式 

Mybatis有两种映射方式:

        1.通过XML映射;
        2.通过注解;

2、 MyBatis老式入门开发(了解)

2.1 Mybatis框架的核心类

SqlSessionFactoryBuilder 会话工厂构建类 主要用来构建会话工厂的
SqlSessionFactory :会话工厂类 主要用来生产会话对象的;
SqlSession:会话对象,底层是对Connection连接对象的封装;

数据准备

数据库
create table user (
  id int primary key auto_increment,
  username varchar(20) not null,
  birthday date,
  sex char(1) default '男',
  address varchar(50)
);
insert into user values (null, '大猩猩','1980-10-24','男','湘北高中三年');
insert into user values (null, '樱木花道','1992-11-12','男','湘北高中一年');
insert into user values (null, '流川枫','1983-05-20','男','湘北高中一年');
insert into user values (null, '宫城良田','1995-03-22','男','湘北高中二年');
insert into user values (null, '三井寿','1980-10-24','男','湘北高中三年');
insert into user values (null, '井上彩子','1995-03-22','女','湘北高中二年');
insert into user values (null, '赤木晴子','1995-03-22','女','湘北高中一年');
用户类
public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private  String sex;
    private String address;
}

2.2 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>
    <environments default="development">
        <!--配置数据库环境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test0908"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

2.3 mapper.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">
<mapper namespace="hhy.UserMapper"><!--命名空间-->
    <!--resultType结果类型:写实体类路径(将查询出的数据转换为User对象)-->
    <!--执行语句时使用:命名空间名.id,如hhy.UserMapper.findUserById-->
    <select id="findUserById" resultType="hhy.pojo.User">
        select * from user where id = #{id}
    </select>
</mapper>

2.4 log4j.properties配置文件:

可将详细信息输出到控制台,例:sql语句、参数、JDBC连接、autocommit事务状态等。

### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger=debug, stdout
### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

2.5 测例及流程图:

    //myBatis查询
    @Test
    public void t10() throws SQLException, IOException {
        //加载核心配置文件,构建会话工厂
        String resource="mybatis-config.xml";//路径名字正确可以直接点击进入xml
        InputStream rs = Resources.getResourceAsStream(resource);
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(rs);
        //获取会话对象
        SqlSession sqlSession = build.openSession();
        //调用查询api
        //第一个参数为mapper.xml中的命名空间名.sql的id,第二个参数为想要查询的数据库中数据id
        User user = sqlSession.selectOne("hhy.UserMapper.findUserById",1);
        System.out.println("user = " + user);
        sqlSession.close();
        rs.close();
    }

 2.6 使用mybatis老式的开发模式弊端

1)要使用指定的sql必须使用命名空间.id进行字符串拼接,维护性比较差;
2)并且这个sql用多少次,就拼接多少次,维护性比较差;

3、mybatis的dao层动态代理(掌握)

 3.1 核心步骤

Mybatis存在2种开发方式:
1)旧版本mybatis执行的方式(了解即可);
2)动态代理实现操纵数据库(掌握);

核心步骤
1)接口与xml映射文件绑定;
	接口名称与xml映射文件命名空间要一致;
	接口方法与xml中crud标签ID要一致;
2)通过SqlSession获取代理对象;
   eg:sqlSession.getMapper(接口);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值