zoukankan      html  css  js  c++  java
  • MyBatis的基础

    1.MyBatis介绍

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
    IBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
    在这里插入图片描述
    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

    Mybatis提供一种“半自动化”的ORM实现。MyBatis需要手动写SQL,后期可以逆向工程!
    这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。
    下载地址: MyBatis下载地址:https://github.com/mybatis/mybatis-3/releases
    使用版本:3.4.5

    2.2.MyBatis特点

    • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
    • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
      解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
    • 提供映射标签,支持对象与数据库的orm字段关系映射
      提供对象关系映射标签,支持对象关系组建维护
      提供xml标签,支持编写动态sql(SQL动态拼接)
    • 性能: JDBC > MyBatis(半自动) > Hibernate(全自动)
    • 效率:JDBC < MyBatis(半自动) <> Hibernate(全自动)

    3.3.MyBatis基础应用

    3.1.1 环境准备

    • Jdk环境:jdk1.8
    • Ide环境:IDEA
    • 数据库环境:MySQL 5.1
    • Mybatis:3.4.5

    3.1.2 下载MyBatis
    mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases
    Mybatis-3.4.5.jar:mybatis的核心包

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.bruceliu.mybatis</groupId>
        <artifactId>mybatis-20190902</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!--导入MyBatis开发环境的依赖-->
        <dependencies>
    
            <!-- myBatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
    
            <!-- mysql驱动包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
    
            <!-- Junit测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
    
            <!--Log4J日志工具  打印运行日志用的!-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
            </dependency>
    
        </dependencies>
    
    
        <!--如果是WEB项目,那么不用创建bulid标签-->
        <build>
            <!--编译的时候同时也把包下面的xml同时编译进去-->
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
        </build>
    </project>
    

    3.1.3 添加日志配置-log4j.properties

    log4j.rootLogger=DEBUG, Console 
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
      
    log4j.logger.java.sql.ResultSet=INFO  
    log4j.logger.org.apache=INFO  
    log4j.logger.java.sql.Connection=DEBUG  
    log4j.logger.java.sql.Statement=DEBUG  
    log4j.logger.java.sql.PreparedStatement=DEBUG 
    

    3.1.4 准备数据库

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `user`
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(32) NOT NULL COMMENT '用户名称',
      `birthday` date DEFAULT NULL COMMENT '生日',
      `sex` char(1) DEFAULT NULL COMMENT '性别',
      `address` varchar(256) DEFAULT NULL COMMENT '地址',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES ('1', '王五', '2018-09-06', '1', '四川成都');
    INSERT INTO `user` VALUES ('10', '张三', '2014-07-10', '1', '北京市');
    INSERT INTO `user` VALUES ('16', '张小明', '2018-09-06', '1', '河南郑州');
    INSERT INTO `user` VALUES ('22', '陈小明', '2018-09-05', '1', '河南郑州');
    INSERT INTO `user` VALUES ('24', '张三丰', '2018-09-13', '1', '河南郑州');
    INSERT INTO `user` VALUES ('25', '陈小明', '2018-09-12', '1', '河南郑州');
    INSERT INTO `user` VALUES ('26', '王五', '2018-09-05', '0', '河南郑州');
    

    3.1.5.创建主配置文件: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"/>
    
    	<!-- 环境 -->
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC" />
    			<dataSource type="POOLED">
    				<property name="driver" value="${jdbc.driver}" />
    				<property name="url" value="${jdbc.url}" />
    				<property name="username" value="${jdbc.username}" />
    				<property name="password" value="${jdbc.password}" />
    			</dataSource>
    		</environment>
    	</environments>
        
    
        <!--映射Mapper文件-->
         <!--引入映射文件-->
        <mappers>
            <mapper resource="com/bruceliu/mapper/UserMappper.xml"></mapper>
        </mappers>
    
    </configuration>
    

    jdbc.properties:

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatisdb?useUnicode=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=123456
    

    3.2 实现MyBatis的查询

    3.2.1 获取SqlSession对象(核心对象)

    MyBatis框架中涉及到的几个API
    SqlSessionFactoryBuilder:该对象负责根据MyBatis配置文件mybatis-config.xml构建SqlSessionFactory实例 负责生产session
    SqlSessionFactory:每一个MyBatis的应用程序都以一个SqlSessionFactory对象为核心。该对象负责创建SqlSession对象实例。
    SqlSession:该对象包含了所有执行SQL操作的方法,用于执行已映射的SQL语句

  • 相关阅读:
    mysql安装遇到的坑
    git pull 、git fetch、 git clone
    MD markdown入门
    Libevent:8Bufferevents高级主题
    Libevent:6辅助函数以及类型
    Libevent:5events相关
    Libevent:4event loop
    Libevent:3创建event_base
    Libevent:2设置
    Libevent:1前言
  • 原文地址:https://www.cnblogs.com/linbin7/p/14550246.html
Copyright © 2011-2022 走看看