框架之mybatis(2)————day39 基本的第二种用法2

学习MyBatis的准备工作

环境

  • JDK1.8
  • Mysql 5.7
  • maven 3.6.1
  • IDEA

需要掌握的知识

  • JDBC
  • Mysql
  • Java基础
  • Maven
  • Junit

简介

什么是MyBatis

自己理解的是:

  • 是一种持久层的框架 :
  • 支持SQL,以及存储过程的高级映射
  • 他避免了JDBC的代码和手动的加参数
  • 使用xml 或者注解进行配置映射文件,POJO在数据库中进行记录
  • 选择题:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis ,2013年11月迁移到Github。

持久化

  • 把数据在持久和瞬时之间进行状态的切换
  • 生活中的持久化:冷藏,罐头
  • 内存:**断电即失

为什么需要进行持久化

  • 内存贵
  • 不能让重要的数据消失了

持久层

  • 完成持久化工作的代码块
  • 层界限十分明显

为什么需要Mybatis?

优点:
  • 简单易学
  • 灵活
  • sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

2 MyBatis入门

思路:搭建环境–>导入Mybatis–>编写代码–>测试!

2.1搭建环境

思路:搭建环境–>导入Mybatis–>编写代码–>测试!

创建数据库

CREATE DATABASE mybatis ;
USE mybatis;

CREATE TABLE `user`(
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(32) DEFAULT NULL,
`pwd` VARCHAR(32) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user` (`id`,`name`,`pwd`) VALUES 
(1,'张三','123456'),
(2,'李四','123456'),
(3,'王五','123456')

新建项目

  1. 新建一个普通的maven项目
  2. 删除src目录
  3. 导入maven依赖
   
    
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
        
            org.mybatis
            mybatis
            3.5.2
        
        
        
            junit
            junit
            4.12
        
        //找接口的映射文件

        
            
                src/main/resources
                
                    **/*.properties
                    **/*.xml
                
            
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
            
        
    
    
创建一个模块
  • 编写mybatis的核心配置文件



    
    
    
    
    
    
       
    
    
        
            
            
                
                
                
                
            
        
    
    
    
        
        
        
    

  • 编写mybatis工具类
package org.westos.utils;


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 java.io.IOException;
import java.io.InputStream;

/**
 * @Description:TODO
 * @Author:@李小白
 * @Date:2019/9/28 21:33
 */
public class MyBatis {
   private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

编写代码

  • 实体类
package com.kuang.pojo;

//实体类
public class User {
    private int id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

  • Dao接口
package org.westos.dao;

import org.westos.pojo.User;

import java.util.List;

/**
 * @Description:TODO
 * @Author:@李小白
 * @Date:2019/9/28 20:59
 */
public interface UserMapper {
    //查询所有的数据
    List getFindAll();
    //用id进行查询数据
    User getFindUserById(int id);
    //进行模糊查询,根据姓名进行模糊查询
    List getUserLike(String name);
    //添加一个用户
    int getAddUser(User user);
    //根据id更改一个用户
    int getUpdateUser(User user);
    //根据id进行删除一个用户
    int getDeleteUser(int id);


}

  • 接口实现类由原来的UserDaoImpl转变为一个 Mapper配置文件.



    
    
        
        
        
    
    
    
    
    
    
    
    
       insert  into mybatis.user (id,name ,pwd) values (#{id},#{name},#{pwd});
    
    
    
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    
    
    
        delete from mybatis.user where id=#{id};
    

测试

  • junit测试
package org.westos.dao;

import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.westos.pojo.User;
import org.westos.utils.MyBatis;

import java.util.List;

/**
 * @Description:这是一个方便进行测试的类
 * @Author:@李小白
 * @Date:2019/9/28 21:38
 */
public class MyTest {
    //开始进行查询所有的用户
    UserMapper mapper;
    SqlSession sqlSession;
    @Before
    public void getBefore(){
        sqlSession = MyBatis.getSqlSession();
        mapper = sqlSession.getMapper(UserMapper.class);
    }
    @Test
    public void getFangAll(){

        List findAll = mapper.getFindAll();
        for (User user : findAll) {
            System.out.println(user);
        }
        sqlSession.close();
    }
    //根据id进行查询用户
    @Test
    public void getFindUserById(){

        User findUserById = mapper.getFindUserById(1);
        System.out.println(findUserById);
        sqlSession.close();
    }
    //添加一个用户,一定要记住一个问题,增删改一定要进行手动提交
    @Test
    public void getAddUser(){
        int name = mapper.getAddUser(new User(5, "赵六", "12333"));
        sqlSession.commit();
        System.out.println(name);
    }
    //更改一个客也是有问题,记得手动提交
    @Test
    public void getUpdateUser(){
        int update = mapper.getUpdateUser(new User(2, "小李", "53453"));
       sqlSession.commit();
        System.out.println(update);
    }
    //对数据库好像不管用
    @Test
    public void getDeleteUser(){
        int deleteUser = mapper.getDeleteUser(1);
        sqlSession.commit();
        System.out.println(deleteUser);
    }
    //对数据进行模糊查询,这个的问题就是应该返回的第一个List
    @Test
    public void getUserLike(){
        List userLike = mapper.getUserLike("%小%");
        for (User user : userLike) {
            System.out.println(user);
        }
    }
    @After
    public void getAfter(){
        sqlSession.close();
    }
}

你可能感兴趣的:(MyBatis)