您的位置:首页 > 其它

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

2017-03-27 16:53 543 查看
之前做项目的时候,接触到服务器端开发,当时服务器是用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

<?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>
<!--  JavaBean类型自动映射扫描包配置 Java类型别名  -->
<typeAliases>
<package name="com.brok1n.web.java.springmvcdemo1.bean"/>
<!--<typeAlias alias="User" type="com.brok1n.web.java.springmvcdemo1.bean.User" />-->
</typeAliases>

<environments default="development">
<!-- 数据库环境 -->
<environment id="development">
<!-- 使用JDBC使用管理 -->
<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

<?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>

<properties resource="jdbc.properties" />

<!--  JavaBean类型自动映射扫描包配置 Java类型别名  -->
<typeAliases>
<package name="com.brok1n.web.java.springmvcdemo1.bean"/>
<!--<typeAlias alias="User" type="com.brok1n.web.java.springmvcdemo1.bean.User" />-->
</typeAliases>

<environments default="development">
<!-- 数据库环境 -->
<environment id="development">
<!-- 使用JDBC使用管理 -->
<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展现一下它的能力。



这是我们的基本的项目结构信息。

我们来看看我们的代码。

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<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  123456  女   18  452700765       452700765@qq.com
10004   brok3n  123123  女   18  245586408       245586408@qq.com
10005   brok3n  123123  男   18  245586408       245586408@qq.com
10007   brok3n  123123  男   18  245586408       245586408@qq.com
10008   brok3n  123123  女   18  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 "操作失败";
}
}


然后我们看看请求结果:



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

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