MyBatis初识(一)
MyBatis是什么:
1、MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
2、Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
MyBatis是解释:
1、mybatis配置文件说明:
SqlMapConfig.xml(或者mybatis-config.xml),此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂 ,再由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
MyBatis是简单入门:
1、项目结构如图:

2、从mybatis的jar包结构可知mybatis用的是log4j记录日志,所以log4j.properties文件内容如下:
log4j.rootLogger=INFO, stdout log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.console=org.apache.log4j.ConsoleAppender
3、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"></properties>
<settings>
<!-- 这个配置使全局的映射器启用或禁用缓存。系统默认值是true,设置只是为了展示出来 -->
<setting name="cacheEnabled" value="true" />
</settings>
<!-- 配置环境 -->
<environments default="oracle">
<!--配置oracle的环境-->
<environment id="oracle">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源-->
<!-- 数据库连接池,由mybatis管理 -->
<dataSource type="POOLED">
<property name="driver" value="${oracleDriver}" />
<property name="url" value="${oracleURL}" />
<property name="username" value="${oracleUser}" />
<property name="password" value="${oraclePwd}" />
</dataSource>
</environment>
<environment id="mysql">
<!-- 配置事务类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置事数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_study?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="mapper/ITiresDao.xml" />
</mappers>
</configuration>
4、mapper.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.txj.dao.ITiresDao">
<resultMap id="tiresList" type="com.txj.entry.Tires">
<result column="TIR_ID" property="tirId" jdbcType="DECIMAL" />
<result column="TIR_MODEL" property="tirModel" jdbcType="VARCHAR" />
<result column="TIR_STATICLOADED_RADIUS" property="tirStaticloadedRadius" jdbcType="DECIMAL" />
</resultMap>
<!-- 查询所有信息-->
<select id="findAll" resultMap="tiresList">
select TIR_ID,TIR_MODEL,TIR_STATICLOADED_RADIUS from T_TIRES order by tir_model
</select>
</mapper>
5、pom引入
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<!--jdbc的jar引入-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.1.0</version>
</dependency>
6、dao层的interface接口
public interface ITiresDao {
/**
* 查询所有信息
*/
List<Tires> findAll();
}
7、entry实体类
public class Tires implements Serializable {
private Integer tirId;
private String tirModel;
private Integer tirStaticloadedRadius;
public Integer getTirId() {
return tirId;
}
public void setTirId(Integer tirId) {
this.tirId = tirId;
}
public String getTirModel() {
return tirModel;
}
public void setTirModel(String tirModel) {
this.tirModel = tirModel;
}
public Integer getTirStaticloadedRadius() {
return tirStaticloadedRadius;
}
public void setTirStaticloadedRadius(Integer tirStaticloadedRadius) {
this.tirStaticloadedRadius = tirStaticloadedRadius;
}
}
8、构建SqlSessionFactory的工具类
public class SqlSessionFactoryUtil { //创建私有静态的引用,确保该引用只会建立一个且不能被外部直接修改 private static SqlSessionFactory sqlSessionFactory=null; //使用静态代码块,以保证该部分代码在类加载的同时就能首先被加载 static { try { //以输入流的形式读取配置文件 // 1.读取配置文件 InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml"); //将工厂类的引用指向由SqlSessionBuilder类对象调用build(配置输入流)方法创建的SqlSession工厂类对象 // 2.创建SqlSessionFactory工厂 sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //获取SqlSession对象 public static SqlSession createSqlSession(){ // 使用构建者模式,把对象的创建信息隐藏,使得调用方法的时候就可拿到对象 return sqlSessionFactory.openSession(); } //关闭sqlSession public static void closeSqlSession(SqlSession sqlSession){ if(sqlSession!=null){ sqlSession.close(); } } }
9、调用测试一番:
public class Test { /** * 测试方式 * @param args */ public static void main(String[] args) throws Exception { SqlSession session = SqlSessionFactoryUtil.createSqlSession(); ITiresDao mapper = session.getMapper(ITiresDao.class); List<Tires> tiresList = mapper.findAll(); if (tiresList == null) { System.out.println("The result is null"); } else { for (Tires tiresInfo : tiresList) { System.out.println(tiresInfo.getTirModel()); } } SqlSessionFactoryUtil.closeSqlSession(session); } }
至此maven项目就引入Mybatis框架完成!简单做一记录,待续完善....
浙公网安备 33010602011771号