Mybatis入门最简单实例

Mybatis入门实例

本文使用IDEA创建mybatis项目,并成功coding一个最简单的mybatis示例
(本文参靠自以下文章,非常感谢原作者!)

MyBatis:快速入门实例 HelloWorld
https://my.oschina.net/kolbe/blog/508052
MyBatis官方文档(中文版)
http://www.mybatis.org/mybatis-3/zh/getting-started.html

MyBatis官方文档的一句话,道出了mybatis框架的核心要素

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。

所有代码都是围绕SqlSessionFactory展开的。

接下来展示创建mybatis的步骤
一、在IDEA中创建一个maven项目。
在maven的pom.xml配置文件中加入mybatis依赖、jdbc驱动如下

    <!-- mybatis核心包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- mysql驱动包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.29</version>
    </dependency>

二、为代码方便,还可以使用mybatis的generator插件
继续在pom中添加依赖

    <build>
        <finalName>xxx工程名</finalName>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>

然后在resources文件夹下添加generatorConfig.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!--导入属性配置-->
    <properties resource="datasource.properties"></properties>

    <!--指定特定数据库的jdbc驱动jar包的位置-->
    <classPathEntry location="${db.driverLocation}"/>

    <context id="default" targetRuntime="MyBatis3">

        <!-- optional,旨在创建class时,对注释进行控制 -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--jdbc的数据库连接 -->
        <jdbcConnection
                driverClass="${db.driverClassName}"
                connectionURL="${db.url}"
                userId="${db.username}"
                password="${db.password}">
        </jdbcConnection>


        <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>


        <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
            targetPackage     指定生成的model生成所在的包名
            targetProject     指定在该项目下所在的路径
        -->
        <!--<javaModelGenerator targetPackage="com.mybatis.pojo" targetProject=".\src\main\java">-->
        <javaModelGenerator targetPackage="com.mybatis.pojo" targetProject="./src/main/java">
            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否对model添加 构造函数 -->
            <property name="constructorBased" value="true"/>
            <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
            <property name="trimStrings" value="true"/>
            <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>

        <!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->
        <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->
        <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
        -->

        <!-- targetPackage:mapper接口dao生成的位置 -->
        <!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.mybatis.dao" targetProject="./src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 该处与数据库中要生成的表相对应-->
        <table tableName="Student" domainObjectName="Student" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>


        <!-- geelynote mybatis插件的搭建 -->
    </context>
</generatorConfiguration>

然后在idea右侧maven标签中找到mybatis-generator,根据配置文件中的相应配置来生成对应的bean类和mapper类

三、完成上述两步环境搭建后,需要配置mybatis的配置文件
在resources文件夹下,新建一个mybatis-config.xml的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/mybatis?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 此处要加载所需要使用的mapper -->
    <mappers>
        <mapper resource="mappers/StudentMapper.xml"/>
    </mappers>
</configuration>

四、完成配置后,新建一个测试类,来测试mybatis的配置效果

public class StudentTest {

    public static void main (String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        //1.加载MyBatis的配置文件:mybati-config.xml(它也加载关联的映射文件,也就是mappers节点下的映射文件)
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //2.SqlSessionFactoryBuuilder实例通过输入流调用build方法来创建sqlsession工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //3.通过工厂来获取sqlsession的实例,sqlsession完全包含了面向数据库执行sql命令所需的所有方法。
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //4.准备基本信息
        //4.1)statement:用来定位映射文件(StudengtMapper.xml)中的语句(通过namespace id + select id) 下句中 com.mybatis.dao.StudentMapper为namespace id/selectByPrimaryKey为select id
        String statement = "com.mybatis.dao.StudentMapper.selectByPrimaryKey";
        //4.2)parameter:传进去的参数,也就是需要获取students表中主键值为1的记录
        int parameter = 1;
        //5.sqlsession实例来直接执行已映射的sql语句,selectOne表示获取的是一条记录
        Student student = sqlSession.selectOne(statement,parameter);
        System.out.print(student.toString());
        //6.关闭输入流和sqlsession实例
        inputStream.close();
        sqlSession.close();
    }
}

为体现接口式编程的思想,可将上述部分代码替换为

        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Student student = mapper.selectByPrimaryKey(2);

以上,最简单的mybatis示例已经完成!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值