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框架完成!简单做一记录,待续完善....

原文地址:https://www.cnblogs.com/zyanrong/p/12218415.html