首页 / 技术 / 正文

MyBatis安装与配置实战教程

2015年12月22日 暂无评论 ... 技术

MyBatis 原名为 IBatis,是一款开源轻量级的基于 Java 的数据库框架。因其使用灵活,性能优越,被很多企业用于开发。本文按照 MyBatis 的实践为主,理论可以慢慢理解,但是实践一学就会。所以不对 MyBatis 原理和机制作讨论。

MyBatis 安装准备

MyBatis 由于是基于 Java 的框架,因此需要 Java  的开发环境。个人比较喜欢 eclipse ,因为免费且清爽。

基本上需要的软件为:

eclipse

运行环境:

JDK

MySQL

同时需要准备的 jar 包为:

mybatis-3.3.0.jar

mysql-connector-java-5.1.25-bin.jar

下载地址:https://github.com/mybatis/mybatis-3/releases

搭建流程

1.引入 MyBatis 和数据库驱动的JAR;

2.创建并引入 SqlConfigMap.xml;

3.获取 SqlSession.

详细流程

首先创建一个 Java 项目,WEB类型也可。

1.引入 MyBatis 和数据库驱动的JAR

引入 JAR 包引入的是两个文件,分别是 mybatis-3.3.0.jar 驱动包和 mysql-connector-java-5.1.25-bin.jar MySQL数据库连接包。将两个 jar 包复制进入 WebContent->WEB-INF->lib 文件夹中,然后选中两个文件,右键,点选“Build Path”引用这两个库文件,引用后文件左下角出现小标记,如图所示。

导入jar包

2.创建并引入 SqlConfigMap.xml

xml文件名并没有特别严格的要求,随意起即可。文件放入 src 文件夹下。

文件的内容大体如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">   
  3. <configuration>   
  4. <environments default="development">   
  5. <environment id="development">   
  6. <transactionManager type="JDBC" />   
  7. <dataSource type="POOLED">   
  8. <property name="driver" value="com.mysql.jdbc.Driver" />   
  9. <property name="url" value="jdbc:mysql://localhost/mybatis" />   
  10. <property name="username" value="root" />   
  11. <property name="password" value="root" />   
  12. </dataSource>   
  13. </environment>   
  14. </environments> 
  15. <mappers>   
  16. <mapper resource="com/hundsun/dao/UserDao.xml" />   
  17. </mappers> 
  18. </configuration> 

注解:

1.DTD头文件,格式规定不可更改

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

2.文件以 configuration 为根标签,environments/environments 部分为数据库信息配置部分,可以根据自己的需要修改。

数据库配置可以使用 .propertities 文件的方式设置

  1. <properties resource="dbConfig.properties"></properties>  

如果两种方式并存,则会优先采取 xml 配置文件,即第一种。

3.mappers 部分,及内部的 mapper 标签,这部分是用来引入其他 xml 文件的,而被引入的 xml 文件中存放的是数据库查询的映射文件。

3.获取 SqlSession

获取 SqlSession 可以理解为进行数据库的查询操作。首先明确的是,在 Mybatis 中的查询语句是放在 xml 文件中的。

创建链接数据库的 java 文件

因为每次查询都需要链接数据库操作,所以把链接数据库的操作单独做成 tool 包或者 util 包中作为工具反复使用。

  1. package com.hundsun.util;  
  2.  
  3. import java.io.InputStream;  
  4.  
  5. import org.apache.ibatis.session.SqlSession;  
  6. import org.apache.ibatis.session.SqlSessionFactory;  
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  8.  
  9. public class MyBatisConnection {  
  10. public static SqlSession getConnection(){  
  11.     SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();  
  12.     InputStream config = MyBatisConnection.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");  
  13.     SqlSessionFactory ssf = sfb.build(config);  
  14.     SqlSession ss = ssf.openSession();  
  15.     return ss;  
  16. }  

过程是,创建 SqlSessionFactoryBuilder 对象,并引入 InputStream 流读取上述第二步做好的全局配置文件。最后创建打开 SqlSession。

在需要链接数据库的其他文件中,只需要使用代码

  1. SqlSession session = MyBatisConnection.getConnection(); 

获取到 SqlSession 对象。

编写和配置查询 xml 文件

文件预览

  1. <?xml version="1.0" encoding="UTF-8" ?>    
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
  3.  
  4. <mapper namespace="com.hundsun.dao.UserMapperDao"> 
  5.  
  6. <insert id="Myinsert" parameterType="com.hundsun.entity.User"> 
  7. insert into t_user (username,sex,age,salary) values (#{username},#{sex},#{age},#{salary})  
  8. </insert> 
  9.    
  10. <select id="selectAll" resultType="com.hundsun.entity.User"> 
  11. select * from t_user  
  12. </select> 
  13.  
  14. </mapper> 

文件解析

1.另外的DTD头,跟 SqlConfigMap.xml 文件头不同。

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

2.mapper 标签中的 namespace 属性内的值是一个接口文件,接口文件中要声明所有在这个标签下出现的查询,如案例中有两个查询,则需要在接口文件中声明两个方法。

3.mapper 内中的标签根据不同的查询被写成了 insert、select 等,其中的 id 属性是标识符,需要引用其语句是需要通过 id 来访问;parameterType 属性指向了要数据操作的对象类型;resultType 属性是指查询返回的对象类型。

要注意的是,查询即使是返回了很多条数据,resultType 依然要写单个记录的对象类型,而不能写 List 等集合类。

4.SQL查询语句中,出现 #{} 中的内容是对应对象中的属性,但是前提是要在自己创建的对象中编写好 get 和 set 方法。

查询业务

查询业务建议承接在 namespace 中声明的接口。

需要注意的是,除了查询语句,其他数据库的查询完成后,需要对 SqlSession 对象执行提交处理 ,即 commit(),处理完成后,需要关闭操作,即 close();

  1. public static void findAll(){  
  2.     SqlSession ss = MyBatisConnection.getConnection();  
  3.     User u = ss.selectOne("selectAll");  
  4.     System.out.println(u.getUsername()+" "+u.getAge());  
  5.     ss.close();  
  6. }  
  7. public static void UserInsert(User user){  
  8.     SqlSession ss = MyBatisConnection.getConnection();  
  9.     ss.insert("Myinsert",user);  
  10.     ss.commit();  
  11.     ss.close();  

工作原理

1.提供数据库连接的参数(SqlConfigMap.xml)

2.提供SQL语句(XML文件)

3.利用 MyBatis 提供的 API 执行 (SqlSession)

 

虽然从表面上看起来,Mybatis 查询需要顾及的文件比较多,但这种从 MVC 出发的设计方式,更加适合于协同编写,提高工作效率。

暂无评论

发布评论