MyBatis(3)--MyBatis一些概念

1.资料

1>.下载MyBatis

2>.MyBatis项目参考

3>.MyBatis-Sping项目参考


2.MyBatis的基本构成

1>.SqlSessionFactoryBuilder

①.用于根据配置信息或者代码生成工厂接口(SqlSessionFactory);

2>.SqlSessionFactory

①.依靠工厂生成会话(SqlSession);
②.这是一个接口,而不是实现类;
③.两种方式创建:
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>
    <typeAliases>
        <typeAlias type="com.anlw.model.Role" alias="role" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
                <property name="autoCommit" value="true"/>
            </transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="roleMapper.xml" />
    </mappers>
</configuration>
  • (1).其中别名typeAliases只针对实体类设置别名,比如在mapper.xml中的parameterType和resultType属性使用,经测试,对于namespace属性不适用;
  • (2).environments下可以有多个environment节点,用于配置多个数据库连接信息,可以通过default属性选择使用哪个;
  • (3).这个配置事务自动提交不起作用,需要在代码级别设置,sqlSessionFactory.openSession(true),这个方法是重载,默认不加参数为不自动提交;
  • (4).mapper的路径注意:。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
代码(不推荐):
public static SqlSessionFactory getSqlSessionFactory(){
        //构建数据库连接池
        PooledDataSource dataSouce = new PooledDataSource();
        dataSouce.setDriver("com.mysql.jdbc.Driver");
        dataSouce.setUrl("jdbc:mysql://localhost:3306/mybatis");
        dataSouce.setUsername("root");
        dataSouce.setPassword("123456");
        //构建数据库事务方式
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        //创建数据库运行环境
        Environment environment = new Environment("development", transactionFactory, dataSouce);
        //构建Configuration对象
        Configuration configuration = new Configuration(environment);
        //注册一个MyBatis的上下文别名
        configuration.getTypeAliasRegistry().registerAlias("firstRole", Role.class);
        //加入一个映射器,下面的映射器必须使用注解,不可以使用配置文件
        configuration.addMapper(RoleMapper.class);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        return sqlSessionFactory;
    }

3>.SqlSession

①.直接通过命名信息去发送sql去执行并返回结果,SqlSession层可以通过insert,update,select和delete等方法带上sql的id来操作XML中配置好的sql;
session.insert("com.anlw.mapper.RoleMapper.insertRole", role);
②.可以获取Mapper的接口(映射器),让映射器通过命名空间和方法名称找到对应的sql,发送给数据库执行后返回结果;

4>.SQL Mapper(映射器)

①.由Java接口和XML文件或注解构成,需要给出对应的sql和映射规则,负责发送sql去执行并返回结果;
②.两种方式创建:
XML(推荐)
代码(不推荐)
public interface RoleMapper {
    @Select("select id,role_name as roleName,note from t_role where id = #{id}")
    Role getRole(Long id);
}
③.如果mapper使用注解,那么获取SqlSessionFactory的方式必须采用代码的方式,而不能采用xml配置的方式;

3.MyBatis核心组件生命周期

1>.SqlSessionFactoryBuilder

①.它的生命周期只存在于方法局部,生成SqlSessionFactory后就可以回收丢弃;

2>.SqlSessionFactory

①.存在于MyBatis应用的整个生命周期中;
②.应该为单例模式,一个数据库只对应一个SqlSessionFactory;

3>.SqlSession

①.生命周期为请求数据库处理事务的过程;
②.线程不安全对象;
③.保证事务的一致性;
④.用完在finally中及时关闭;

4>.Mapper

①.生命周期在一个SqlSession事务方法之内,属于方法级别的;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值