mybatis面试之编程步骤

本文介绍了如何在Maven项目中引入Mybatis 3.3.1版本,详细讲解了全局配置文件mybatis-config.xml的编写,包括环境设置、插件、数据源等,并演示了如何定义mapper接口、XML映射文件、生成SqlSessionFactory及进行数据库操作。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1:引入jar

可以从这里查看myabtis的tag列表,截至到当前2021-09-07 11:40:48最新版本为3.5.7,如下图:
在这里插入图片描述
如下是基于maven引入3.3.1版本:

<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.3.1</version>
</dependency>

2:编写全局配置文件

一般名称定义为mybatis-config.xml,当然也可以自定义,在该文件中定义属性,别名,环境,插件类型处理器对象工厂mapper映射信息等,如下是一个可能配置:

<?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="mybatis/mybatisOuter.properties">
        <property name="projectName" value="dongshidaddy-learn-java"/>
    </properties>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="logPrefix" value="dongshidaddy--^^--"/>
        <setting name="cacheEnabled" value="true"/>
<!--        <setting name="lazyLoadTriggerMethods" value="getClass,getManyagce,c"/>-->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>
    <typeAliases>
        <!--<typeAlias type="yudaosourcecode.mybatis.TestMybatis" alias="TestMybatis"/>-->
        <package name="yudaosourcecode.mybatis"/>
    </typeAliases>
    <typeHandlers>
        <!--<typeHandler handler="yudaosourcecode.mybatis.typehandler.EnumAndIntTypeHandler" javaType="yudaosourcecode.mybatis.MyEnum" jdbcType="INTEGER"/>-->
        <typeHandler handler="yudaosourcecode.mybatis.typehandler.EnumAndIntTypeHandler" javaType="yudaosourcecode.mybatis.MyEnum"/>
        <!--<package name="yudaosourcecode.mybatis.typehandler"/>-->
    </typeHandlers>
<!--
    <objectFactory type="yudaosourcecode.mybatis.objectfactory.MyObjectFactory">
        <property name="name" value="zhangsan"/>
        <property name="age" value="90"/>
    </objectFactory>
-->
    <!--<objectWrapperFactory type="yudaosourcecode.mybatis.objectwrapperfactory.MyObjectWrapperFactory"/>-->
<!--
    <plugins>
        <plugin interceptor="yudaosourcecode.mybatis.interceptor.MyInterceptor">
            <property name="xxx" value="yyyy"/>
            <property name="aaaa" value="bbbb"/>
        </plugin>
    </plugins>
-->
    <plugins>
        <plugin interceptor="yudaosourcecode.mybatis.interceptor.MyPagingPlugin"/>
    </plugins>
    <!-- 配置mybatis自动转换为驼峰式命名 -->
    <!-- 环境,可以配置多个,default:指定采用哪个环境 -->
    <environments default="test">
        <!-- id:唯一标识 -->
        <environment id="test">
            <!-- 事务管理器,JDBC类型的事务管理器 -->
            <transactionManager type="JDBC" >
                <property name="" value=""/>
            </transactionManager>
            <!-- 数据源,池类型的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3366/ssmdemo" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    <!--数据库厂商标示 -->
    <databaseIdProvider type="DB_VENDOR">
        <property name="Oracle" value="oracle"/>
        <property name="MySQL" value="mysql"/>
    </databaseIdProvider>
    <mappers>
        <!--<mapper resource="mybatis/mapper/TestMyBatisMapper.xml"/>
        <mapper resource="mybatis/mapper/TestTypehandlerMapper.xml"/>-->
        <!--<mapper resource="mybatis/mapper/TestTypehandlerMapper.xml"/>-->
        <!--<package name="yudaosourcecode.mybatis.mapper"/>-->
        <mapper resource="yudaosourcecode/mybatis/mapper/TestResultmapAndParametermapMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/MyMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestMyBatisMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestTypehandlerMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/UserDaoMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/UserMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestExtendAndAutoMappingMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestResultmapConstructorMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestResultmapCollectionOneMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestResultmapCollectionManyMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestMapperSqlMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestLanguageDriverMapper.xml"/>
        <mapper resource="yudaosourcecode/mybatis/mapper/TestSelectKeyMapper.xml"/>
        <!--<mapper resource="yudaosourcecode/mybatis/mapper/TestSelectKeyMapperHuohuo.xml"/>-->
    </mappers>
</configuration>

3:定义mapper接口

因为mybatis会通过jdk动态代理生成具体实现类,所以这里只需要定义接口就可以了。

4:定义mapper xml

如果是在3:定义mapper接口中使用注解方式的话,这里就不需要了。

配置xml,注意namespace使用3:定义mapper接口中定义接口的全限定名称,如果不是的话,不会自动生成接口的动态代理实现类。

5:生成SqlSessionFactory

通过org.apache.ibatis.session.SqlSessoinFactoryBuidler类的build方法,将2:编写全局配置文件中的文件作为参数生成org.apache,ibatis.session.SqlSessionFactory,可能代码如下:

String resource = "mybatis/mybatis-config-1.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

6:创建SqlSession

通过5:生成SqlSessionFactory中创建的SqlSessionFactory的openSession方法打开新的会话对象SqlSession,可能代码如下:

String resource = "mybatis/mybatis-config-1.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
this.sqlSessionFactory = sqlSessionFactory;
this.sqlSession = this.sqlSessionFactory.openSession();

7:生成Mapper接口实现类

通过SqlSession的getMapper方法生成Mapper 接口动态代理实现类,可能代码如下:

String resource = "mybatis/mybatis-config-1.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
this.sqlSessionFactory = sqlSessionFactory;
this.sqlSession = this.sqlSessionFactory.openSession();
this.testExtendAndAutoMappingMapper =
      this.sqlSession.getMapper(TestExtendAndAutoMappingMapper.class);

8:数据库操作

通过7:生成Mapper接口实现类进行数据库操作,需要注意的是修改操作时,需要根据具体的情况进行会话的commit,或者时rollback。

9:关闭会话

会话使用完毕后,通过close方法,进行关闭,释放数据库连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值