【狂神】MyBatis(第一个Mybatis程序)

今天学了一点大概,但大概只是整个mybatis学习的1/10,我之所以想要重学一遍的原因是,我忘了。哈哈哈,但是以现在的角度去学习,我会更能够理解它的底层知识。希望这篇文章能够帮助你更好的入门。

趁着年轻多多投资自己的大脑总归是不会错滴(这是狂神老师说的,我觉得很有道理),我们一起加油呀~

               __________________________  
              /                           \
             |I hope you happy,always!
             \__   __ __ __ __ __ __ __ __/
                | /                        
         __w    |/                         
 (\{\  ,%%%%            .-.   __           
 { { \.%%%_/   ,_*   _ /   \ /  \          
 { {  \%%/(___//    / \|   |/   |          
 { {\,%%%|[))-'    :   \   /  _/_          
 {/{/\,%%)\(       _\_  \_|_.'   '.        
       '%]\\      :   '-(  )_____.'        
         ((']       '.__/'--\   \          
          \yI\         /  |  \   )         
         (/  (\       /   /  |'-:          
         7    k\      '--'\__/ \ \         
        J'    `L_               \ \        
                                 \ \       

MyBatis-9.28

【狂神】MyBatis(第一个Mybatis程序)_第1张图片

SSM框架:配置文件的。查看官网

1、简介

1.1、什么是Mybatis

【狂神】MyBatis(第一个Mybatis程序)_第2张图片

如何获得:

1.去github里面搜索

2.Maven 仓库



org.mybatis
mybatis
3.5.13

3.中文文档mybatis – MyBatis 3 | 入门

1.2、持久化

【狂神】MyBatis(第一个Mybatis程序)_第3张图片

1.3、持久层

【狂神】MyBatis(第一个Mybatis程序)_第4张图片

1.4、为什么需要Mybatis?

【狂神】MyBatis(第一个Mybatis程序)_第5张图片

2、第一个Mybatis程序

大部分框架的学习都是按照下面的思路来走的。

搭建环境->导入依赖->创建工程->测试

2.1、搭建数据库:

CREATE DATABASE `mybatis`
use `mybatis`

CREATE TABLE `user`(
    `id` int(20) not null PRIMARY KEY,
    `name` VARCHAR(30) DEFAULT null,
    `pwd` VARCHAR(30) DEFAULT null
)ENGINE=INNODB DEFAULT charset=utf8;

insert into `user`(`id`,`name`,`pwd`) VALUES(1,'张三','123456'),(2,'张四','1234567'),(3,'张五','12345678')

2.2、创建项目:(Maven类型的就行-普通版)

【狂神】MyBatis(第一个Mybatis程序)_第6张图片

2.3、删掉src包

这样做得好处是,在父工程中导入得依赖可以直接在子工程中使用,比较方便

2.4导入依赖

这里导入的主要是mysql,mybatis,junit。

 
    
    
        
            org.mybatis
            mybatis
            3.5.2
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
            junit
            junit
            4.12
        
    

2.5、创建一个模块

给他命名为Mybatis01。然后建立三个包,分别是mapper,pojo,utils包,并分别建立几个类和核心依赖配置文件。如下图所示:

【狂神】MyBatis(第一个Mybatis程序)_第7张图片

2.6、连接数据库

这里连接数据库的时候,需要注意的是下面图片箭头所指的方向不要填,后面再选数据库名就可以了。

【狂神】MyBatis(第一个Mybatis程序)_第8张图片

2.7、编写mybatis工具类

【狂神】MyBatis(第一个Mybatis程序)_第9张图片

为了方便使用,代码如下:

这个代码的主要目的是为了得到SqlSession,方便测试类。

package com.zhang.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;

//sqlSession-->sqlSession
public class MybatisUtils {
    //放在static静态代码块里面,起到一个首先加载的作用
    public static SqlSessionFactory sqlSessionFactory;
    static {
        try{
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

2.8、建立mapper文件,里面是接口及相关得xml配置

主要是Usermapper,和UserMapper.xml。前者里面是接口方法,后者的话就相当于是它的一个实现类,但是是通过配置文件来完成的。二者之间的联系通过namespace=" 全限命名",下面是狂神老师的截图,但是我的代码会和它有些出入。

【狂神】MyBatis(第一个Mybatis程序)_第10张图片

 代码如下:

UserMapper

package com.zhang.mapper;

import com.zhang.pojo.User;

import java.util.List;

public interface UserMapper {
    List getUser();
}

UserMapper.xml





    

2.9、实体类pojo

这个比较简单,就直接上代码了。但是需要注意的是,里面的变量名必须和数据库中表的名称保持一致。不一致也行,还是得改。

package com.zhang.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 + '\'' +
                '}';
    }
}

2.10、测试类:

当所有的步骤都完成以后,我们就可以新建一个测试类了,在这里测试类是放在maven项目的test包下的。为了方便测试,我们需要新建和mapper文件下差不多的包,保证其一个规范性。如图所示:

【狂神】MyBatis(第一个Mybatis程序)_第11张图片

然后就是编写测试类,首先我们先拿到SqlSession这个对象,先调用Mybatis里面的getSqkSession()方法,然后调用它的getMapper(接口类),注意这里是接口,所以我们也需要返回其相对应的类型。代码图片如下:

【狂神】MyBatis(第一个Mybatis程序)_第12张图片 

代码:

package com.zhang.mapper;

import com.zhang.pojo.User;
import com.zhang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class test {

    @Test
    public void test1() {
        SqlSession session= MybatisUtils.getSqlSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        List userList=mapper.getUser();
        for (User user : userList) {
            System.out.println(user);
        }
        session.close();
    }

}

然后就开始点击测试了。不出意外的话,会出现下面的结果。

【狂神】MyBatis(第一个Mybatis程序)_第13张图片

但是如果运气不太好的话,就会出现下面的两个错误,或者其他。

2.11、两个错误:

1、配置文件mapper没有在Mybatis-config.xml中注册

【狂神】MyBatis(第一个Mybatis程序)_第14张图片

这个的问题就是在Mybatis-config.xml中,没有下面这一行代码,又或者是写错了


        
    

需要注意的是,resource中 的不能用点 . 来代替,用了之后就会出现我这里写的第二个问题,也就是资源过滤问题。

2、资源过滤问题

Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com.zhang.mapper.UserMapper.xml

这里的话,如果不是 / 写错了,那就是真的资源配置有问题了,我们可以查看target包,看其下对应的mapper包对应的两个文件是否都在,不在的话那就需要下面的代码进行配置了。如果你的IDEA上面没有target包的话,请先将该项目打包一下,如果还是没有,那就说明你的target包被隐藏了,请按下面的步骤图片进行操作。

【狂神】MyBatis(第一个Mybatis程序)_第15张图片

最好是子与父的pom.xml都配置一下。

【狂神】MyBatis(第一个Mybatis程序)_第16张图片

代码:

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

 下面是狂神老师总结的我们会碰到的问题,那么你中标了吗?

【狂神】MyBatis(第一个Mybatis程序)_第17张图片

 这个是SqlSessionFactoryBuilder和SqlSessionFactory以及SqlSession的作用及内涵(嗯,应该是可以这么说的)

【狂神】MyBatis(第一个Mybatis程序)_第18张图片

 【狂神】MyBatis(第一个Mybatis程序)_第19张图片

用try-catch 只是个建议(下面)

【狂神】MyBatis(第一个Mybatis程序)_第20张图片

 Ok,今日份的笔记分享就先到这了,希望大家能有个愉快的学习过程,加油呀!

你可能感兴趣的:(Mybatis,mybatis)