本文内容:
2、创建java工程,导入MyBatis jar包和数据库驱动包
1、下载jar包:
https://github.com/mybatis/mybatis-3/releases
2、创建java工程,导入MyBatis jar包和数据库驱动包
mybatis-3.4.4.jar 和 mysql-connector log4j slf4j-log4j slf4j-api
3、创建数据库表,并添加数据:
4、MyBatis的使用:
首先呢我们需要两个xml文件,一个接口,还有一个测试用的测试类。我给他们起名分别为:mybatis_config.xml area.xml IAreaDao.java
下面挨个讲解文件中配置代码的作用,以及测试类中代码的作用:
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>
<environments default="development"> <!-- 作用:使用哪个数据库。environments中可以有多个environment,也就是说可以配置多个数据库的信息,在default中可以指定使用哪个数据库 -->
<environment id="development"> <!-- 作用:连接的数据库的信息 -->
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:keeper" />
<property name="username" value="scott" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers> <!-- 注册Mapper xml文件 其中resource中的值对应定义的另一个xml文件的名字 -->
<mapper resource="area.xml" />
</mappers>
</configuration>
area.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.zzu.area.IAreaDao"> <!-- 调用哪个接口中的方法,namespace值为接口路径 -->
<select id="getName" resultType="java.lang.String"> <!-- id为调用接口中的哪个方法 resultType指定返回值的类型-->
select name from area where code = #{code} <!-- sql语句 #{code} 是传到sql语句中的code值 -->
</select>
</mapper>
Test.java:
//以下代码的解释可以从,SqlSession sqlSession = sqlSessionFactory.openSession();开始看
package com.zzu.test;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zzu.area.IAreaDao;
public class Test {
public static void main(String[] args) throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis_config.xml");//建造工厂需要的材料(mybatis_config.xml中的配置)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //工厂类由一个工厂builder来建造
SqlSession sqlSession = sqlSessionFactory.openSession(); //sqlSession连接数据库到关闭数据库之间的过程,代表一次会话,用完需要关闭,sqlSession由一个工厂类生成
IAreaDao areaDao =sqlSession.getMapper(IAreaDao.class); //创建动态对象,
System.out.println(areaDao.getClass().getName()); //输出动态对象
System.out.println(areaDao.getName("110113")); //输出code对应的name值
sqlSession.close();
}
}
//由输出结果可以看出,创建动态对象使用的是JDK动态代理;输出结果正好是code对应的name值
IAreaDao.java:
package com.zzu.area;
public interface IAreaDao {
String getName(String code);
}
mybatis_config.xml中确定了连接那个数据库,然后到area.xml文件中找到对应的mapper,在mapper中确定调用的方法所在接口,并且使用动态类的动态对象来执行下面SQL语句。