【Mybatis从0到1-003】mybatis框架及简单入门程序

本文详细介绍MyBatis框架的搭建过程,包括配置日志、SqlMapConfig.xml、映射文件User.xml等步骤,并通过一个查询用户的示例演示如何使用MyBatis进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis是持久层的框架,是Apache下的顶级项目。2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

本文首先介绍mybatis的框架,之后通过id查询用户的基本信息作为入门程序。

其框架结构如下:


框架结构也同样是,我们进行操作的流程。

【1】为了便于程序开发,首先创建一个日志文件,便于将来错误的查看。创建log4j.properties文件,路径为:src\main\resources\log4j.properties,输入以下内容:

# Global logging configuration
#开发环境日志要设置成debug
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
【2】创建SqlMapConfig.xml文件,路径为:src\main\resources\SqlMapConfig.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>
    <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="123" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载 映射文件 -->
</configuration>
【3】根据上面的框架,现在开始配置映射文件,需要注意,在后期的开发中,mapper代理开发映射文件名称叫XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml,这里,我们暂时不用mapper代理进行开发,采用最为原始的方式进行开发,这也是从0到1的过程。

新建文件,起名字为User.xml,之所以用User,是因为,后面的内容我们将引入一个更删改查用户信息的入门例子,这也是为后面的开发所准备的。文件路径为:src\main\resources\sqlmap\User.xml,输入以下内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
-->
<mapper namespace="test">
    <!-- 在 映射文件中配置很多sql语句 -->
    <!-- 需求:通过id查询用户表的记录 -->
    <!-- 通过 select执行数据库查询
    id:标识 映射文件中的 sql
    将sql语句封装到mappedStatement对象中,所以将id称为statement的id
    parameterType:指定输入 参数的类型,这里指定int型
    #{}表示一个占位符号
    #{id}:其中的id表示 接收输入 的参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
    resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。-->
    <select id ="findUserById" parameterType="int" resultType="po.User">
        SELECT *FROM user WHERE id=#{id}
    </select>
</mapper>
这段程序不懂不要紧,一点点来解释。这里配置的文件实现的要求是:通过id查询用户表的记录 。代码中有具体的解释。在映射文件中,
resultType="po.User"

表示执行SQL之后返回结果所对应的java对象类型,这里的po.User 中的User类可以看做是返回体,这个文件需要自己创建(当然,在后面,结合spring之后就能自动生成了,现在,我们先手动创建吧)在创建文件之前,还有一点千万注意,就是在SqlMapConfig.xml中加载映射文件。在SqlMapConfig.xml中加入以下代码:

<!-- 加载 映射文件 -->
<mappers>
    <mapper resource="sqlmap/User.xml"/>
</mappers>

【4】创建User.java文件,路径为:src\main\java\po\User.java

public class User {
    private int id;
    private String username;// 用户姓名
    private String sex;// 性别
    private Date birthday;// 生日
    private String address;// 地址
//setter、getter方法及tostring方法略
}
【5】上面都设置好之后,开始逻辑的程序编写吧。首先创建java文件,路径为:src\main\java\first\MyFirstMybatis.java,代码的逻辑,在上面的框架中都有提到,这里,简单叙述下: 1.根据配置文件创建会话工厂(SqlSessionFactory);2.通过工厂得到SqlSession;3.通过SqlSession操作数据库。

code如下,先通过单元测试来测试下,我们的代码逻辑正确与否。

public class MyFirstMybatis {
    // 根据id查询用户信息,得到一条记录结果


    public void findUserByIdTest() throws Exception {


        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);


        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();


        // 通过SqlSession操作数据库
        // 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
        // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
        // sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
        // selectOne查询出一条记录
        User user = sqlSession.selectOne("test.findUserById", 1);


        System.out.println(user);


        // 释放资源
        sqlSession.close();


    }
}

【6】最后一步,创建测试文件,进行单元测试。单元测试很简单,idea创建单元测试,这里简单说下简单操作流程。

6.1 鼠标光标放到上面代码的“MyFirstMybatis ”处,点击鼠标右键。如图:


6.2 点击“create new test”---->,之后按照图示操作。


6.3 点击OK,之后创建的文件路径为:src\test\java\first\MyFirstMybatisTest.java,在public void findUserByIdTest() throws Exception { }中贴入下面的代码:

// mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 通过SqlSession操作数据库
        // 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
        // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
        // sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
        // selectOne查询出一条记录
        User user = sqlSession.selectOne("test.findUserById", 1);

        System.out.println(user);

        // 释放资源
        sqlSession.close();
【7】到此,所有操作结束。点击run运行,将会看到我们通过id查询用户的基本信息。如下:


【8】最后,对比下,数据库的信息,看select的结果是否一致。

请继续关注后续内容,欢迎评论转发并给出指导意见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值