Windows下Java+MyBatis框架+MySQL的开发环境搭建教程

MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。

MyBatis是在Apache许可证 2.0下分发的自由软件,是iBATIS 3.0的分支版本。其维护团队也包含iBATIS的初创成员。
与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。

与JDBC相比,MyBatis简化了相关代码:SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎,声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,或者使用Apache Velocity集成的插件,SQL语句可以被动态的生成。

MyBatis与Spring Framework和Google Guice集成,这使开发者免于依赖性问题。

MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认下基于Java HashMap的缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。 

要点
这段时间学习下来,其实对Mybatis来说主要的过程无法是以下几步

  1. 从XML配置文件中获取SessionFactory,然后由SessionFactory产生相应的Session。

  2. 是用Session对象对业务数据完成相应的CRUD操作(增删改查)和相应的事务控制。

  3. 使用完毕后关闭相应的Session,以免过度占用资源

  4. 使用配置相应的Mapper xml文件进行业务实体的JavaBean与数据库表之间做相应的Map操作

战前准备:

  1. 开发环境Eclipse JavaEE IDE,JDK 1.6,数据库mysql 5.5

  2. 下载相应Jar包,以备后用

    mybatis-3.2.3.zip 解压后拿出 mybatis-3.2.3.jar,=> 下载地址: http://code.google.com/p/mybatis/ (Mybatis核心包)

    mybatis-generator-core-1.3.1.jar => 下载地址: http://code.google.com/p/mybatis/wiki/Generator (Mybatis自动生成配置文件包)

    mysql-connector-java-5.1.26-bin.jar => 下载地址:http://dev.mysql.com/downloads/connector/j/ (Mysql 的jdbc驱动包)

搭建步骤  

  接下来大家可以再Eclipse下面建一个名为MybatisDemo的Java Project项目,按照如下图中所示新建相应的包结构和文件夹结构,其中config与mapper分别为文件夹,

  包david.mybatis.demo与包david.mybatis.model下分别存放相应的demo运行程序与Javabean对象,lib文件夹下存放刚刚下载的那几个第三方jar包。

建完下面的目录,我们可以添加相应的Jar包,如下图

完成后,执行下面SQL,建立DEMO所需的表结构,分别有3张表,Visitor(访问者表),Website(网站表),Channel(频道表)

/*创建Visitor*/
CREATE TABLE Visitor
(
  Id INT(11) NOT NULL AUTO_INCREMENT,
  Name VARCHAR(1000) NOT NULL,
  Email VARCHAR(1000) NOT NULL,
  Status INT NOT NULL DEFAULT 1,
  CreateTime DateTime,
  PRIMARY KEY(Id)
)
/*创建网站表*/
CREATE TABLE Website
(
  Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(1000) NOT NULL,
  VisitorId INT REFERENCES Visitor(Id),
  Status INT NOT NULL DEFAULT 1,
  CreateTime DateTime
)

/*创建频道表*/
CREATE TABLE Channel
(
  Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(1000) NOT NULL,
  WebsiteId INT REFERENCES Website(Id),
  Status INT NOT NULL DEFAULT 1,
  CreateTime DateTime
)

所有这些都完成后,我们就要开始动手啦~

就像开头说的,Mybatis的所有配置都源于一份XML配置文件,我们需要在config文件夹下,新建名为mybatis_demo_config.xml的配置文件,这一份东西就是我们后面所需要操作的核心之一。

在配置这个文件千万要注意<configuration>节点内的元素都是有层级顺序的要求的,不能够随意更换次序,否则在加载xml配置文件的时候会出现异常而导致后续操作不成功。

具体的节点说明大家可以查看http://mybatis.github.io/mybatis-3/zh/configuration.html#,这里只说比较常用的节点,typeAliases,environments,mappers。

1. typeAliases => 别名节点,可以通过设置这个节点的属性,这样配置文件中其他需要实体名字的地方都可以使用此别名而不是完全限定名

例如 <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" />

2. environments => 环境节点,配置数据连接相关的信息

3. mappers => 配置SQL映射语句。

最简单的配置如下:

<?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>
  <typeAliases>
    <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" />
  </typeAliases>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"></transactionManager>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <!-- ?useUnicode=true&characterEncoding=utf8为了支持中文插入 -->
        <property name="url"
          value="jdbc:mysql://127.0.0.1:3306/mybatis_db?useUnicode=true&characterEncoding=utf8" />
        <property name="username" value="root" />
        <property name="password" value="123456" />
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/VisitorMapper.xml" />
  </mappers>
</configuration>

在包david.mybatis.demo下面新建一个名为MyBatisUtils类,里面存放获取SqlSession与关闭SqlSession的方法,提炼出来方便多次复用。

package david.mybatis.demo;

import java.io.InputStream;
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 david.mybatis.model.CRUD_Enum;

public class MybatisUtils {

  private static final String CONFIG_PATH = "config/mybatis_demo_config.xml";

  /*
   * 获取数据库访问链接
   */
  public static SqlSession getSqlSession() {
    SqlSession session = null;
    try {
      InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
      //可以根据配置的相应环境读取相应的数据库环境
      // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(
      // stream, "development");
      SqlSessionFactory factory = new SqlSessionFactoryBuilder()
          .build(stream);
      session = factory.openSession();
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }
    return session;
  }

  /*
   * 获取数据库访问链接
   */
  public static void closeSession(SqlSession session) {
    session.close();
  }

  /*
   * 返回操作记录消息
   */
  public static void showMessages(CRUD_Enum type, int count) {
    switch (type) {
    case Add:
      System.out.println("添加了" + count + "条记录。");
      break;
    case Delete:
      System.out.println("删除了" + count + "条记录。");
      break;
    case Update:
      System.out.println("更新了" + count + "条记录。");
      break;
    case Query:
      System.out.println("匹配了" + count + "条记录。");
      break;
    case List:
      System.out.println("共有" + count + "条记录。");
      break;
    default:
      break;
    }
  }
}

在包david.mybatis.model下面新建一个名为Visitor的类,用来作相应的OR Mapping。

package david.mybatis.model;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Visitor {
  private int id;
  private String name;
  private String email;
  private int status;
  private Date createTime;

  public Visitor() {
    // TODO Auto-generated constructor stub
    createTime = new Date();
  }

  public Visitor(String name, String email) {
    this.name = name;
    this.email = email;
    this.status = 1;
    this.createTime = new Date();
  }

  public int getId() {
    return id;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  public String getEmail() {
    return email;
  }

  public Date getCreateTime() {
    return createTime;
  }

  @Override
  public String toString() {
    // TODO Auto-generated method stub
    return String.format("{Id: %d, Name: %s, CreateTime: %s}", id, name,
        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime));
  }
}

在包david.mybatis.demo下面新建一个VisitorMapper.xml,用来映射相应SQL语句。

这里要注意namespace=>david.mybatis.demo.IVisitorOperation一定要与对应这个包下面的实际文件名,IVisitorOperation否则无法成功加载相应的映射文件

<mapper namespace="david.mybatis.demo.IVisitorOperation">
  <select id="basicQuery" parameterType="int" resultType="Visitor">
    select * from visitor where id=#{id} and
    Status>0 order by Id
  </select>
</mapper>

接下来运行下面的程序

 public static void testBasicQuery(int id) {
    SqlSession session = MybatisUtils.getSqlSession();
    try {
      Visitor visitor = (Visitor) session.selectOne("david.mybatis.demo.IVisitorOperation.basicQuery", id);
      MybatisUtils.closeSession(session);
      System.out.println(visitor);
    } catch (Exception e) {
      // TODO: handle exception
    }
  }

一个最简单的执行结果就出来啦

这算是Mybatis系列的HelloWord~

(0)

相关推荐

  • Docker搭建前端Java的开发环境详解

    一.解决的痛点 1.免搭建后端开发环境. 2.开发环境改变只需要改变镜像就能同步更新. 3.不需要eclipse等IDE工具. 4.切换开发项目 二.解决思路 利用docker启动Ubuntu镜像,在容器中搭建好项目需要的开发环境,使用挂载卷将本地代码挂载到容器中,使用容器中的环境编译运行代码,宿主机通过 docker 暴漏出的端口访问容器中的服务,这样前端的开发机上就只需要部署docker就搞定了. 三.关于docker 了解docker 本文并不打算细讲docker的知识,相关的文章有很多,

  • Java+MyBatis+MySQL开发环境搭建流程详解

    主要搭建过程 1. pom.xml文件中加入mybatis和数据库依赖,这里使用mysql: <properties> <mybatis.version>3.2.3</mybatis.version> <mysql.version>5.1.26</mysql.version> <slf4j.api.version>1.7.5</slf4j.api.version> <testng.version>6.8.7&l

  • Linux系统下搭建Java开发环境

    一.下载 首先,当然是要下载了. 地址:www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 按照需要选择不同的版本. 二. 解压 将下载下来的 .tar.gz 文件解压. 使用如下命令解压: 复制代码 代码如下: sudo tar zxvf ./jdk-7u45-linux-x64.tar.gz 为了方便管理,可将解压后的文件移至另一个文件夹. 不做也行. 笔者将文件移至了 /opt/Java/

  • java servlet结合mysql搭建java web开发环境

    这次学servlet用的数据库是mysql,而且我当前是准备好好的学JAVAWeb了,所以关于javaweb的文章后面肯定还会继续的更新,前几天其实想学php,但是后面一个朋友的提醒,让我转向了javaweb. 因为我当前是做手机应用,所以学java还是打算从数据接口这块入手,这次讲解的流程将非常仔细...从我搭建的方式-----中途遇到的错误----->最后数据展示,我都会一一贴出来. 一.在ecplise下安装javaweb的开发环境: 这一步和前面一篇javaservlet+oracle是

  • java servlet结合Oracle搭建java的web开发环境

    最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口这块,涉及到的ashx wcf webserver这些,学了下servlet感觉 这些技术比较像 ashx编写的接口. 一. 首先在电脑上安装了 oracle数据库, 安装ORACLE数据库按常理说,直接下载安装就行了,但是中途是遇到了问题的,原因就是我的系统是Win7 64 oracle的clie

  • Java开发环境配置教程(win7 64bit)

    Java开发环境配置(win7-64bit) 1.概述 搭建Java开发环境一般需要同时安装JDK和JRE.JDK:指Java开发工具包Java Development Kit,开发Java程序时必需,JDK里包含一部分公共JRE.JRE:一个Java运行环境Java Runtime Environment,运行已开发的Java程序时所用. 2.文本用到的工具 Java SE基础工具包:官网下载 (版本很多,自行选择适用版本,省略安装过程,安装时候下一步下一步即可) 3.环境变量配置 Java环

  • Linux下Java开发环境搭建以及第一个HelloWorld

    想在Linux进行JAVA开发吗?环境如何搭建,第一个HelloWorld如何实现,下面马上奉献: 1环境搭建     1.1 Java JDK 的安装     Java JDK 是java编译和运行的必要环境,所以首先必须安装这一软件包,方法如下:     1)下载JDK压缩包,注意看好版本是x86还是x64,windows的还是           linux,要搞清楚,我下的是jdk-7u13-linux-i586.tar.gz:     2)解压压缩包,并将解压后的目录放到/usr/li

  • webuploader在springMVC+jquery+Java开发环境下的大文件分片上传的实例代码

    注意: 1,webuploader上传组件会和jQuery自带的上传组件冲突,所以不要使用<form>标签中添加上传文件的属性; enctype="multipart/form-data" 2.并且屏蔽ApplicationContext-mvc.xml里面的拦截配置! <!-- 上传拦截,如最大上传值及最小上传值 --> <!--新增加的webuploader上传组件,必须要屏蔽这里的拦截机制 <bean id="multipartRes

  • Java开发环境jdk 1.8安装配置方法(Win7 64位系统/windows server 2008)

    什么是jdk jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的工具包.也可以说jdk是java的sdk. 目前的JDK大致分三个大版本: Java SE:Java Platform, Standard Edition,Java平台标准版,主要用来开发桌面程序 Java EE:Java Platform, Enterprise Edition,Java平台企业版,主要用来开发WEB程序 Java ME:Java Platform, Micro Ed

  • 搭建java WEB开发环境和应用

    一 使用Tomcat服务器,使用DBCP数据源搭建Web开发环境 1.JDK安装,默认路径即可 2.Tomcat5.5服务器 1)配置Tomcat的服务器端口: 打开D:\apache-tomcat-5.0.18\conf\server.xml, 查看如下代码: <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxThreads="

随机推荐