MyBatis 使用笔记(1) 简介、安装、配置

之前做项目的时候,接触到服务器端开发,当时服务器是用SpringMVC做后台服务 MyBatis做数据库连接 Mysql数据库 在那之前 我只接触过JavaWeb的简单的Servlet的基本用法,在边学边开发的过程中学了一部分SpringMVC和MyBatis的技术 SpringMVC做接口 用到的东西比较少,主要是数据库处理操作用MyBatis的时候遇到各种问题。现在终于有时间来系统化一些的学习MyBatis。

一:MyBatis 是什么?

关于这个问题,我想你能看到我这个笔记 你就应该能知道他是什么。这里我借用百度百科的一句话来描述 MyBatis是什么


MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。


二:MyBatis 能干什么?

简单来说,MyBatis能帮助我们快速开发基于Java + 数据库的程序,能帮助我们快速映射POJO对象和数据库中的数据 同时支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。

三:安装MyBatis

安装MyBatis 就是在我们的项目中配置 添加MyBatis 让我们可以在项目中使用它。

https://github.com/mybatis/mybatis-3/releases
在这里 找最新版下载 我写这篇文章的时候 最新版是 3.4.2

下载后 我们得到一个 mybatis-3.4.2.zip 解压之后找到 mybatis-3.4.2.jar 这个jar文件。然后把它添加到我们的Java项目中的lib目录下再添加一下项目依赖。我们的项目就可以使用MyBatis了。

<注意>
为了能够让我们的项目正常连接到数据。我们还需要下载我们所使用的数据库的连接驱动 比如我使用的是mysql数据库 我就下载了 mysql-connector-java:5.1.41的驱动添加到项目的依赖库中。

四:配置MyBatis

MyBatis的配置 相对于其他框架来说应该算是比较简单的。下面我们就来看看MyBatis的基本配置
MyBatis的配置可以放到一个文件里。也可以放到多个文件里。一个文件。是它的主配置文件,另一个文件是一些变动的配置信息 数据库连接信息。

下面我们先来看第一种配置方式(一个文件):mybatis-config.xml



<configuration>
    
    <typeAliases>
        <package name="com.brok1n.web.java.springmvcdemo1.bean"/>
        
    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/mybatis?useUnicode=true&characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
        <mapper resource="UserMapper.xml"/>
    mappers>
configuration>

这就是一个基本的一个文件的的配置MyBatis的方式,配置了包级别的别名定义,配置了一个MySQL数据库连接 还配置了一个映射器,我们先了解一下上面的内容。我们下面来看看两个文件的方式 具体的配置信息后面会做详细介绍
MyBatis两个文件的配置: mybatis-config.xml



<configuration>

    <properties resource="jdbc.properties" />

    
    <typeAliases>
        <package name="com.brok1n.web.java.springmvcdemo1.bean"/>
        
    typeAliases>

    <environments default="development">
        
        <environment id="development">
            
            <transactionManager type="JDBC"/>
            
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
        <mapper resource="UserMapper.xml"/>
    mappers>
configuration>

jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
username=root
password=jacklist

好了。这里是两个配置文件来配置MyBatis的方式。可以看到 两个文件的这种方式 我们把数据库连接相关的信息都配置到了properties文件中 方便后期配置、维护等工作。 我们现在就用第二种 两个文件的这种方式来配置 MyBatis。

我们先来写一个简单的例子。让我们的MyBatis展现一下它的能力。
MyBatis 使用笔记(1) 简介、安装、配置_第1张图片

这是我们的基本的项目结构信息。
我们来看看我们的代码。
UserMapper.xml



<mapper namespace="com.brok1n.web.java.springmvcdemo1.mapper.UserMapper">

    <select id="selectUser" resultType="user">
        select * from user where id = #{id}
    select>

mapper>

数据库

id  username  password sex  age  qq     weichart   email
10000   brok1n  12345618  452700765       452700765@qq.com
10004   brok3n  12312318  245586408       245586408@qq.com
10005   brok3n  12312318  245586408       245586408@qq.com
10007   brok3n  12312318  245586408       245586408@qq.com
10008   brok3n  12312318  245586408       245586408@qq.com

DbUtils.java

public class DbUtils {

    private static volatile SqlSessionFactory sqlSessionFactory;

    public static SqlSessionFactory obtionSqlSessionFactory()
    {
        if( sqlSessionFactory == null )
        {
            synchronized (DbUtils.class)
            {
                if(sqlSessionFactory == null )
                {
                    sqlSessionFactory = getSqlSessionFactory();
                }
            }
        }
        return sqlSessionFactory;
    }

    private static SqlSessionFactory getSqlSessionFactory()
    {
        String resource = "mybatis-config.xml";
        SqlSessionFactory sqlSessionFactory = null;
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build( inputStream );
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSessionFactory;
    }

}

来看看我们的UserMapper.java

public interface UserMapper {
    User selectUser(String id);
}

User.java

public class User {

    private int id;
    private String username;
    private String password;
    private String sex;
    private int age;
    private String qq;
    private String weichart;
    private String email;

    getter and setter...
}

来看看我们的HelloController.java

@Controller
public class HelloController {

    @RequestMapping( value = "selectUser.do", method = RequestMethod.POST)
    @ResponseBody
    public String selectUser(HttpServletRequest request, String uid )
    {
        SqlSessionFactory factory = DbUtils.obtionSqlSessionFactory();
        SqlSession sqlSession = null;
        try {
            sqlSession = factory.openSession();
            UserMapper userMapper = sqlSession.getMapper( UserMapper.class );
            User user = userMapper.selectUser(uid);
            if( user != null )
            {
                System.out.println("" + user.toString());
            }
            return JSON.toJSONString( user );
        }
        catch (Exception e )
        {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally {
            if( sqlSession != null )
            {
                sqlSession.close();
            }
        }
        return "操作失败";
    }
}

然后我们看看请求结果:
MyBatis 使用笔记(1) 简介、安装、配置_第2张图片

我们来看看我们程序里关键性代码:

SqlSessionFactory factory = DbUtils.obtionSqlSessionFactory();
SqlSession sqlSession = factory.openSession();
UserMapper userMapper = sqlSession.getMapper( UserMapper.class );
User user = userMapper.selectUser(uid);

首先 我们获取了全局的SqlSessionFactory 用它来创建了一个SqlSession对象,之后调用getMapper方法获得了传入的UserMapper类类型的对象 然后直接调用它的方法 来操作数据库。 UserMapper是一个接口 用来声明要对数据库做的sql操作。

这一篇 我们来基本的了解MyBatis的简介、安装、基础配置、简单用法。后面的文章 我会陆续的介绍MyBatis的更详细的东西。

2017/3/27
by brok1n

你可能感兴趣的:(MyBatis)