【MyBatis】MyBatis修炼之二 Maven项目配置MyBatis连接mySQL

一个好的架构,其实要做的事情是非常简单的,除了深入理解一些架构的原理和组成要素之外,此外就是选择一个合适的技术来解决特定的问题。

下面我们将使用Maven项目配置MyBatis连接mySQL。

项目源码下载地址:https://github.com/JFAlex/MyBatis/tree/master/MyBatis_No.2/alex

MyBatis参考文档:

中文版:http://www.mybatis.org/mybatis-3/zh/index.html
英文版:http://www.mybatis.org/mybatis-3/

工具

JDK 1.6及以上版本
MyBatis 3.30版本
MySQL 6.3版本
Eclipse4 及以上版本
Apache Maven 构建工具


项目源码下载地址:https://github.com/JFAlex/MyBatis/tree/master/MyBatis_No.2/alex


创建Maven项目

首先在Eclipse中创建一个基本的Maven项目,按照如下步骤进行操作即可
1、在Eclipse中打开【File】-->【New】选择【other】(或者使用快捷键 Ctrl + N)打开新建项目向导

【MyBatis】MyBatis修炼之二 Maven项目配置MyBatis连接mySQL_第1张图片

2、选择【Maven】下的【Maven Project】,点击【Next】

【MyBatis】MyBatis修炼之二 Maven项目配置MyBatis连接mySQL_第2张图片

3、选中【Create a simple project (skip archetype selection)】的复选框,点击【Next】
4、输入Group Id,Artifact Id,其他按照默认填写,然后点击【Finish】

【MyBatis】MyBatis修炼之二 Maven项目配置MyBatis连接mySQL_第3张图片

完成以上操作之后,等待片刻,就可以得到一个基于Maven的基本结构了,得到的Maven项目的目录结构如下所示:

【MyBatis】MyBatis修炼之二 Maven项目配置MyBatis连接mySQL_第4张图片

5、打开Maven项目的配置文件pom.xml,添加mybatis和mysql的依赖

        
        
            org.mybatis
            mybatis
            3.3.0
        

        
        
            mysql
            mysql-connector-java
            5.1.35
        

我们可以通过以下链接查找我们需要的Mavne依赖包
https://mvnrepository.com/
http://maven.outofmemory.cn/search/?q=
http://search.maven.org/

我们还需要添加Log4j、JUnit的驱动依赖。最后我们得到的pom.xml文件的内容如下:


  4.0.0
  mybatis
  alex
  0.0.1-SNAPSHOT
  
    
    
        UTF-8
    

    

        
            
            junit
            junit
            4.12
            
            test
        

        
        
            org.mybatis
            mybatis
            3.3.0
        

        
        
            mysql
            mysql-connector-java
            5.1.35
        

        
        
            org.slf4j
            slf4j-api
            1.7.12
        
        
        
            org.slf4j
            slf4j-log4j12
            1.7.12
        

        
            log4j
            log4j
            1.2.17
        

    

    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            
        
    
  

当对Maven的配置进行修改后,我们还需要在项目上单击鼠标右键,在【Maven】中选择【Update Project ...】(或者直接在项目中,使用Alt + F 快捷键)来更新外部依赖包。

让MyBatis跑起来

1、准备数据库
首先创建一个数据库,编码方式设置为UTF-8,通过执行下面的SQL语句创建一个名为mybatis的数据库。

CREATE DATABASE mybatis DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

然后再创建一个名为country的表,并插入一些数据。

use mybatis;


CREATE TABLE Country(
    id int(15) NOT NULL AUTO_INCREMENT,
    countryname varchar(255) NOT NULL,
    countrycode varchar(255) NOT NULL,
    PRIMARY KEY(id)
);


insert INTO country(countryname,countrycode)values('中国','CN'),('美国','US'),('英国','GB'),('法国','FR');

2、配置MyBatis
配置MyBatis有多种方式,在此我们首先使用的最基础的XML形式进行配置。使用XML形式进行配置,首先在src/main/resources下面创建mybatis-config.xml配置文件,然后输入如下内容



    

    
    
    
        
    
    
    
    
        
    
    
    
    
        
            
            
                
                
                
                
            
        
    

    
    
        
    

配置说明:

中的logImpl属性配置指定使用LOG4J输出日志。

元素下面配置了一个包的别名。通常确定一个类的时候需要使用类的全限定名称,例如mybatis.simple.model.Country,在MyBatis中需要频繁的使用类的权限定名称,为了方便使用,我们配置了mybatis.simple.model包,这样配置以后,我们再使用该包下的类的时候就不用再写上包名了,直接使用类名接口,如 Country 。

环境配置中主要配置了数据库连接。
dataSource的类型可以配置成其内置类型之一,如UNPOOLED、POOLED、JNDI.

  • 如果将类型设置为UNPOOLED,MyBatis会为每一个数据库操作创建一个新的连接,并关闭它。该方式适用于只有小规模数据并发用户的简单应用程序上。
  • 如果将属性设置为POOLED,MyBatis会创建一个数据库连接池,连接池中的一个连接将会被用作数据库操作。一旦数据库操作完成,MyBatis会将此连接返回给连接池。在开发测试环境中,经常使用该种方式。
  • 如果将类型设置为JNDI,MyBatis从在应用服务器向配置好的JNDI数据源dataSource获取连接。在生产环境中优先考虑这种方式。

中配置了一个包含完整路径的mapper.xml(CountryMapper.xml)文件,这是一个MyBatis的SQL语句和映射配置文件。

3、创建实体类和Mapper.xml文件
MyBatis是一个结果映射框架,这里创建的实体类实际上是一个数据值对象(Data Value Object),在实际应用中一般会对应一个实体,用于INSERT、UPDATE、DELETE、SELECT操作。

关于Mapper的命名方式:在MyBatis中,根据MyBatis官方的习惯,一般用Mapper作为XML和接口类名的后缀。(CountryMapper.xml)

在src/main/java下面创建一个基础的包mybatis.simple.model,根据数据库表country表,创建实体类Country

package mybatis.simple.model;

public class Country {

    private Long id;
    private String countryname;
    private String countrycode;

    public Country() {
        super();
    }

    public Country(Long id, String countryname, String countrycode) {
        super();
        this.id = id;
        this.countryname = countryname;
        this.countrycode = countrycode;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCountryname() {
        return countryname;
    }

    public void setCountryname(String countryname) {
        this.countryname = countryname;
    }

    public String getCountrycode() {
        return countrycode;
    }

    public void setCountrycode(String countrycode) {
        this.countrycode = countrycode;
    }

    @Override
    public String toString() {
        return "Country [id=" + id + ", countryname=" + countryname + ", countrycode=" + countrycode + "]";
    }

}

然后在src/main/resource(也可以是src/main/java)下创建mybatis/simple/mapper目录,再在该目录下创建CountryMapper.xml文件



    

    

SQL定义在CountryMapper.xml文件中,里面的配置如下:

:XML的根元素,属性namespace定义了当前XML的命名空间