Mybatis入门

1.mybatis配置
SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

4、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

EX
1.导入需要的jar包
mybatis核心包、依赖包、数据驱动包。


核心包.png
依赖包.png
整体效果图.png

2.创建资源文件夹config,加入log4j.properties和SqlMapConfig.xml配置文件

log4j.properties
mybatis默认使用log4j作为输出日志信息。

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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

SqlMapConfig.xml
SqlMapConfig.xml是mybatis核心配置文件,配置文件内容为数据源、事务管理。

<?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="root" />
            </dataSource>
        </environment>
    </environments>
</configuration>

效果图


效果图.png

3.映射文件:

<?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">

<mapper namespace="user"> //命名空间用来隔离sql


<!-- id:statement的id 或者叫做sql的id  相当于方法名-->
    <!-- parameterType:声明输入参数的类型 -->
    <!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
    <!-- #{}:输入参数的占位符,相当于jdbc的? -->

<select id="getUserByid" parameterType="Integer" resultType="com.oracle.pojo.User">
select * from user where id = #{id}
</select>
<select id="getUserByUsername" parameterType="String" resultType="com.oracle.pojo.User">
select * from user where username like "%"#{username}"%"
</select>

</mapper>

4.在SqlMapConfig.xml中加载映射文件

<mappers>
     <mapper resource="com/oracle/mapper/UserMapper.xml"/>
</mappers>

5.测试程序


// 1. 创建SqlSessionFactoryBuilder对象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            // 2. 加载SqlMapConfig.xml配置文件
            InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 3. 创建SqlSessionFactory对象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
            // 4. 创建SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            // 5.执行sql
            List<User> list = sqlSession.selectList("user.getUserByUserName", "王");
            System.out.println(list);
            // 6.释放资源
            sqlSession.close();



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Mybatis的介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由ap...
    itzhouq的笔记阅读 3,942评论 0 5
  • 一、Mybatis 介绍 MyBatis 本是 apache 的一个开源项目 iBatis, 2010年这个项目由...
    林皮皮s阅读 1,885评论 0 0
  • 一、原生态JDBC程序中问题的总结 1.1 JDBC程序 需求:使用jdbc查询mysql数据库中用户的记录Sta...
    Eugene1024阅读 5,362评论 1 2
  • 简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache softwar...
    Olivine_Vip阅读 3,030评论 0 1
  • 创建数据库 Mybatis框架原理(掌握) 1、Mybatis 是什么? Mybatis 是一个持久层的架构,是 ...
    骏龙ll阅读 1,638评论 0 0