(一)初始mybatis

1.mybatis介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

官方文档连接

2.mybatis的优点

1、MyBatis是最简单的持久化框架,小巧并且简单易学。
2、MyBatis灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。
3、提供XML标签,支持编写动态SQL语句(XML中使用if, else)。
4、提供映射标签,支持对象与数据库的ORM字段关系映射(在XML中配置映射关系,也可以使用注解)。

3.mybatis的缺点

对SQL语句依赖程度很高,导致数据库移植性差。比如mysql数据库编程Oracle数据库,部分的sql语句需要调整。

4.myatis入门demo

  • 1.首先创建一个maven项目


    (一)初始mybatis_第1张图片
    image.png

    (一)初始mybatis_第2张图片
    image.png

    (一)初始mybatis_第3张图片
    image.png
    1. 将下面的 dependency 代码置于 pom.xml 文件中


    4.0.0
    com.frank
    mybatis-studying
    1.0-SNAPSHOT
    war
   
    
        
        
            org.mybatis
            mybatis
            3.4.5
        

        
        
            mysql
            mysql-connector-java
            5.1.6
        

        
            log4j
            log4j
            1.2.7
        
        
            org.slf4j
            slf4j-api
            1.7.5
        
        
            org.slf4j
            slf4j-log4j12
            1.7.5
            test
        

        
        
            junit
            junit
            4.12
        
    

    
        
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
                true
            
        
    



  • 3.创建数据库和表信息
database structure for mybatis_test
CREATE DATABASE IF NOT EXISTS `mybatis_test` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
USE `mybatis_test`;

CREATE TABLE IF NOT EXISTS `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=28 DEFAULT CHARSET=utf8;


INSERT INTO `user` (`id`, `username`, `birthday`, `sex`, `address`) VALUES
    (1, '王五', NULL, '2', NULL),
    (10, '张三', '2014-07-10', '1', '北京市'),
    (16, '张小明', NULL, '1', '河南郑州'),
    (22, '陈小明', NULL, '1', '河南郑州'),
    (24, '张三丰', NULL, '1', '河南郑州'),
    (25, '陈小明', NULL, '1', '河南郑州'),
    (26, '王五', NULL, NULL, NULL),
    (27, 'gyf05', '2019-08-15', '2', '广州');
  • 4.创建jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_test?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
  • 5.创建xml映射配置文件:sqlMapconfig.xml



    
    
    
        
        
    

    
        
            
            
            
            
                
                
                
                
            
        
    

    
    


        
        


        
        

        
        


    

  • 6.创建sql映射文件






    
    

    
    

    
    

        
        
            select LAST_INSERT_ID()
        
        insert into user (username,birthday,address,sex)
        values (#{username},#{birthday},#{address},#{sex})
    


    
    
        UPDATE user
        SET username = #{username}, sex = #{sex}, birthday = #{birthday}, address = #{address}
        WHERE id = #{id}
    

    
    
        DELETE FROM user
        WHERE id = #{id}
    



    1. 开始测试
package com.frank.test;

import com.frank.dao.model.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

import java.util.Date;
import java.util.List;

/**
 * @author :frank
 * @date :2019-08-13 16:57
 * @description : 测试
 */
public class MapperTest {


    private SqlSession session;

    @Before
    public void before() throws IOException {
        //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        //读取配置文件的配置信息,利用SqlSessionFactoryBuilder创建sqlSessionFactory
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //通过SqlSessionFactory创建SqlSession。
        session = sessionFactory.openSession();
    }

    @After
    public void after() {
        System.out.println("after.....关闭session");
//        关闭SqlSession。
        session.close();
    }

    /**
     * 查询:一条记录和多条记录
     *
     * @throws IOException
     */
    @Test
    public void findUser() throws IOException {
        //查询一条结果
        User user = session.selectOne("findUserById", 10);
        System.out.println(user);

        //查询多条结果
        List users = session.selectList("findUserByUsername", "小明");
        System.out.println(users);
    }


    //删除用户
    @Test
    public void deleteUserById() throws IOException {
        int affectRow = session.delete("deleteUserById", 27);
        session.commit();//事务
        System.out.println("受影响的行数:" + affectRow);
    }


    /**
     * 插入后,往模型里设置id
     */
    @Test
    public void insertUser() throws IOException {
        User user = new User("gyf05", "2", new Date(), "广州");
        int affectRow = session.insert("insertUser", user);
        session.commit();//事务
        System.out.println("受影响的行数:" + affectRow);
        System.out.println("用户的ID:" + user.getId());
    }
}
  

5.工程结构

(一)初始mybatis_第4张图片
image.png

代码全部测试通过!

你可能感兴趣的:((一)初始mybatis)