《Java EE SSM框架》学习笔记(3)

项目地址:https://share.weiyun.com/5ABeIzh

Mybatis成功之处:

1、不屏蔽SQL,精准定位SQL语句,可对其进行优化和改造,提高系统性能。

2、提供强大灵活的映射机制,提供动态SQL的功能。

3、提供使用Mapper的接口编程,一个接口和一个XML就能创建映射器。

 

Mybatis所需要的包和源码:https://github.com/mybatis/mybatis-3/releases/

参考手册:http://www.mybatis.org/mybatis-3/zh/getting-started.html

 

MyBatis的核心组件:

SqlSessionFactoryBuilder:根据配置或代码生成SqlSessionFactory,使用Builder模式。

SqlSessionFactory:生成SqlSession,使用工厂模式。

SqlSession:即可发送SQL执行返回结果,也可获取Mapper的接口,一般在业务逻辑代码中消失。

SQL Mapper(映射器):由Java接口和XML文件构成,负责发送SQL执行。

 

SqlSessionFactory:

可使用配置或代码去生产SqlSessionFactory,SqlSessionFactoryBuilder提供了Configuration类完成具体的分步构建。

建议使用XML的形式去生产SqlSessionFactory。

 

SqlSessionFactory唯一的作用是去,生产MyBatis的核心接口对象SqlSession。

一般由DefaultSqlSessionFactory实现,SqlSessionManager用于多线程的环境中。

 

使用XML构建SqlSessionFactory

<?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>
    <typeAliases><!-- 别名 -->
        <typeAlias alias="role" type="uestc.hxf.pojo.Role"/>
    </typeAliases>
    <!-- 数据库环境 -->
    <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://xxx:3306/ssm"/>
                <property name="username" value="root"/>
                <property name="password" value="12345678"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 映射文件 -->
    <mappers>
        <mapper resource="com/learn/ssm/chapter3/mapper/RoleMapper.xml"/>
        <mapper class="com.learn.ssm.chapter3.mapper.RoleMapper2"/>
    </mappers>
</configuration>

typeAlias定义了一个别名role,使得在MyBatis上下文中,就可以使用别名代替全限定名了。

environment描述的是数据库,用dataSource配置数据库,type=“POOLED”代表采用MyBatis内部提供的连接池方式。

通过XML构建SqlSessionFactory:使用XML创建,信息在配置文件中,避免重新编译代码。

通过Java代码构建SqlSessionFactory:

需要配置加密过的数据库用户名和密码,在得到SqlSessionFactory前解密为明文时,才会使用这种方式。

 

SqlSession:

有两个实现类,DefaultSqlSession(单线程使用)和SqlSessionManager(多线程环境下使用)

作用类似于,JDBC中的Connection对象,代表着一个连接资源的启用。

作用:1、获取Mapper接口。2、发送SQL给数据库。3、控制数据库事务。

SqlSession就是个门面接口,有很多方法,可直接发送SQL,但真正干活的是Executor。

获取SqlSession伪代码

 

映射器:

最复杂重要的组件,由一个接口和对应的XML文件组成。

作用:1、描述映射规则。2、提供SQL语句。3、配置缓存。4、提供动态SQL。

MyBatis运用了动态代理技术使得Mapper接口可运行起来。

用xml实现:

自动映射功能,只要SQL返回的列名能和POJO对应起来即可。

用注解实现:

因为XML可以相互引入,而注解是不可以的,在复杂的场景中,使用XML方式更加灵活方便。

 

MyBatis前身iBatis留下了,用SqlSession发送SQL:

用Mapper接口发送SQL:

两种方式比较:

1、Mapper接口编程可消除SqlSession带来的功能性代码,提高可读性。

2、SQLSession发送SQL,需要一个SQL id去匹配SQL,晦涩难懂,不太能体现业务逻辑。

 

生命周期:

Mybatis的本质就是,Java对数据库的操作。

SqlSessionFactoryBuilder:只能存在于创建SqlSessionFactory的方法中。

SqlSessionFactory:可以认为是一个数据库连接池,应作为一个单例。

SQLSession:可以认为是一个数据库连接(Connection对象),应存活于一个业务请求中。

Mapper:是个接口,由SqlSession所创建,SqlSession关闭也会消失,生命周期≤SqlSession的。

 

log4j.properties配置

log4j.rootLogger=DEBUG , stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

把它设置为DEBUG级别,让它能够把最详细的日志打印处理,以便调试。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值