zoukankan      html  css  js  c++  java
  • MyBatis 基本构成与框架搭建

    核心组件


        SqlSessionFactoryBuilder (构造器)

            根据配置信息(eg:mybatis-config.xml)或者代码来生成SqlSessionFactory

        SqlSessionFactory(工厂接口)

            依靠工厂来生成SqlSession

         SqlSession(类似于JDBC的Connection)

            线程不安全

            获取映射器,让映射器通过命名空间和方法名称找到对应SQL,发送给 数据库执行后返回结果。

            直接通过命名信息去执行SQL返回结果(iBatis版本留下的方式)

        SQL Mapper(映射器)

            MyBatis新组件,通常由一个Java Interface和XML文件构成,需给出对应的SQL和映射规则。

            负责发送SQL去执行,并返回接口。

     

     框架 搭建


     -src

        -java

         -SQLDao

        -MessageModel<POJO类>

           -SQLHandle<Mapper接口>

         -TestSQL<运行Test>

        -resource

        -message.xml<MapperXML文件 >

             -mybatis-configure.xml<配置文件>


    mybatis-configure.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>
        <!-- 实体类别名,对应映射文件中的resultType -->
        <typeAliases>
            <typeAlias alias="message" type="SQLDao.MessageModel"/>
        </typeAliases>
    
        <!-- 数据库连接配置,配置连接字符串、用户名、密码或缓存、懒加载、语句执行超时时间等这里目前只配置了基本的数据库连接属性 -->
        <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://localhost:3306/testdb" />
                    <property name="username" value="root" />
                    <property name="password" value="root" />
                </dataSource>
            </environment>
        </environments>
    
        <!-- 实体与数据库表映射文件位置,配置后MyBatis才会找到并加载上 -->
        <mappers>
            <mapper resource="message.xml" />
        </mappers>
    </configuration>

    MessageModel

    package SQLDao;
    
    public class MessageModel {
        public int CarID;
        public int postionX;
        public int postionY;
        public int speed;
    
        public int getCarID() {
            return CarID;
        }
    
        public void setCarID(int carID) {
            CarID = carID;
        }
    
        public int getPostionX() {
            return postionX;
        }
    
        public void setPostionX(int postionX) {
            this.postionX = postionX;
        }
    
        public int getPostionY() {
            return postionY;
        }
    
        public void setPostionY(int postionY) {
            this.postionY = postionY;
        }
    
        public int getSpeed() {
            return speed;
        }
    
        public void setSpeed(int speed) {
            this.speed = speed;
        }
    }

    SQLHandle

    package SQLDao;
    
    public interface SQLHandle {
        public int addhistory(MessageModel model);
    }

    TestSQL

    package SQLDao;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.Reader;
    
    public class TestSQL {
        /**
         * SqlSessionFactory是用来创建SqlSession的工厂,SqlSession会执行映射的语句,进行事物提交、回滚等。
         *
         * @return
         */
        public static SqlSessionFactory getSqlSessionFactory() {
            Reader reader = null;
            SqlSessionFactory sqlSessionFactory = null;
            try {
                reader = Resources.getResourceAsReader("mybatis-configure.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return sqlSessionFactory;
        }
    
    
        public static void selectUserByID() {
            // 得到SqlSession实例,便于执行增删改查、事务提交回滚等操作。
            SqlSession session = getSqlSessionFactory().openSession();
            MessageModel messageModel = new MessageModel();
            messageModel.setCarID(1);
            messageModel.setPostionX(2);
            messageModel.setPostionY(3);
            messageModel.setSpeed(4);
            try {
                SQLHandle handle=session.getMapper(SQLHandle.class);
                handle.addhistory(messageModel);
            } finally {
                session.close();
            }
        }
    
        public static void main(String[] args)  {
            selectUserByID();
        }
    }
  • 相关阅读:
    Flask中的CBV以及正则表达式
    Flask中的渲染变量
    Flask中的request和response
    Flask中的cookie和session
    Flask的请求扩展
    [NOIP2000] 提高组 洛谷P1018 乘积最大
    [NOIP2000] 提高组 洛谷P1017 进制转换
    洛谷P2563 [AHOI2001]质数和分解
    巴蜀4384 -- 【模拟试题】作诗(Poetize)
    [NOIP1999] 提高组 洛谷P1016 旅行家的预算
  • 原文地址:https://www.cnblogs.com/rekent/p/8711023.html
Copyright © 2011-2022 走看看