mybatis环境搭建

这几天按着慕课网上的教程搭建了mybatis,做个记录。

先说说mybatis是什么。
mybatis:apache的一个开源项目,持久层的一个开发组件,加快开发速度;
ps:解释下什么是持久层,百度百科的上说将数据存放于不易丢失的器件上,粗糙的理解就是数据库的存储和读取。
所以,mybatis实际上负责数据库的链接、数据的增删改查。

以下是项目的目录结构:


红色的问号是丢失引用的jar包,不要在意这些细节
以下是使用JDBC进行mysql配置一个简单的例子。
import java.sql.*;

public class heihei {
	public static void main(String[] args) throws Exception { 
// 加载驱动
		String driver = "com.mysql.jdbc.Driver";
		// 数据库的网络地址,127.0.0.1是本地IP,3306是端口号,可以在mysql配置文件中修改
		String url = "jdbc:mysql://127.0.0.1:3306/test";
		// 加载类
		Class.forName(driver);
		// 数据库的账户和密码
		Connection connecter = DriverManager.getConnection(url, "root", "root");
		if (!connecter.isClosed())
			System.out.println("success in getConnetion");
		Statement statement = connecter.createStatement();
		// 最简单的sql语句
		ResultSet rs = statement.executeQuery("select * from heiheihei");
		String No = null;
		while (rs.next()) { // 打印结果
			No = rs.getString("id");
			System.out.println(No);
		}
	}
}


相比之后的mybatis代码,会发现以上的代码似乎"简洁"很多。
不过在开发过程中,这并不是我们想要的,因为:
1.实际开发关心的只是sql语句和查询结果的使用;
2.实际开发会有很多的参数,使用java传参方法并不方便。

mybatis比较好地解决了上诉两个问题,通过配置文件来实现数据库的连接和sql语句的修改。

以下是用到的一些jar包,可以到对应的网站去下载。



其中mysql-connector-java.jar是mysql驱动,可以到mysql官网下载;
mybatis.jar是mybatis使用的jar包;
log4j.jar是记录日志用的第三方插件。

下面将一一介绍mybatis的配置文件:
1.Configuration.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>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="sqlxml/User.xml"/>
  </mappers>

</configuration>

重点关注中间的几项配置,这其实就是连接mysql数据的各种配置。
useSSL=false是解决控制报warning的一项配置,没有的话,也没关系。
  <mappers>
    <mapper resource="sqlxml/User.xml"/>
  </mappers>

是加载其他xml文件,该文件就是存放sql语句的文件。

以下是具体的sql语句文件,文件名是User.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="User">
  <select id="test"  resultType="entity.Name">
    select * from heiheihei
  </select>
</mapper>

namespace+id组成了该sql语句的唯一标识,将由java代码调用;
resultType为返回类型,entity.Name是包名加类型,需要写全。

resultType和resultMap的区别,等弄明白单独聊,网上看了很多博客,感觉说的不太清楚。

以下是entity.Name实体类,用于存储mysql查询出来的数据,变量名称需要跟查询出来的结果对应,即列名或者重命名的名称。
package entity;

public class Name {
	private int id;
	private String name;
	private int year;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}

	
}


配置、sql语句、返回实体类都有了,下面就是如何使用这些文件了。

package db;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class DBAccess {
	public SqlSession getSqlSession() throws IOException{
		Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
		SqlSessionFactory sqlSessionFactory =	new SqlSessionFactoryBuilder().build(reader);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		return sqlSession;
	}
}


以下是业务层具体的执行代码

package dao;

import java.io.IOException;
import java.util.List;

import org.apache.ibatis.session.SqlSession;

import db.DBAccess;
import entity.Name;

public class QueryDB {
	public static void main(String[] args) {
		//获取数据库链接
		DBAccess dBAccess = new DBAccess();
		SqlSession sqlSession = null;
		try {
			//使用mybatis获得sqlSession
			sqlSession = dBAccess.getSqlSession();
			//调用User.xml文件的test方法
			List<Name> result = sqlSession.selectList("User.test");
			//打印查询结果
			for (Name name : result) {
				System.out.println(name.getId());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}


配置完成之后,会发现,sql语句已经和数据库的配置文件完全分离了,也就达到了开头第一个目标,至于如何优化传参,将在后面一篇讲解mybatis参数的文章中阐述。

猜你喜欢

转载自4876391520.iteye.com/blog/2277802