浅浅请留步

给我一个键盘,我能敲出整个世界!

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事务方法之内,属于方法级别的;

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/an_2016/article/details/77490314
文章标签: mybatis
个人分类: MyBatis
想对作者说点什么? 我来说一句

MyBatis 3 用户指南中文英文

2010年12月09日 1.44MB 下载

Java Persistence with MyBatis 3(中文版)

2018年01月19日 2.1MB 下载

mybatis学习- ORM概念

hi

u013269938 u013269938

2014-04-25 09:47:58

阅读数:908

没有更多推荐了,返回首页

不良信息举报

MyBatis(3)--MyBatis一些概念

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭