美文网首页
Mybatis入门

Mybatis入门

作者: LiuXiaozhang | 来源:发表于2019-07-31 21:59 被阅读0次

    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();
    
    
    
    

    相关文章

      网友评论

          本文标题:Mybatis入门

          本文链接:https://www.haomeiwen.com/subject/srrxdctx.html