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