zoukankan      html  css  js  c++  java
  • 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框架完成!简单做一记录,待续完善....

  • 相关阅读:
    安装minio单机
    linux使用某非root用户执行开机启动项
    Maven Plugin fork 在 pom.xml中的作用
    Sourcetree 使用之 git add, git commit, git push, git reset commit
    idea远程debug k8s容器服务
    WebService Client端
    Maven编译外部jar包问题
    Sourcetree 使用之 git stash save 和 git stash pop
    Sybase 相关
    FW300R手机不能上网解决方法
  • 原文地址:https://www.cnblogs.com/zyanrong/p/12218415.html
Copyright © 2011-2022 走看看