前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis 基本构成与框架搭建

MyBatis 基本构成与框架搭建

作者头像
Rekent
发布2018-09-04 15:40:11
5200
发布2018-09-04 15:40:11
举报
文章被收录于专栏:日常分享

核心组件


    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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
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

代码语言:javascript
复制
package SQLDao;

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

TestSQL

代码语言:javascript
复制
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();
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 核心组件
    •     SqlSessionFactoryBuilder (构造器)
      •     SqlSessionFactory(工厂接口)
        •      SqlSession(类似于JDBC的Connection)
          •     SQL Mapper(映射器)
          •  框架 搭建
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档