栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第一个Mybatis程序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第一个Mybatis程序

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

学习优秀框架最好的方式就是阅读官网文档,经过初步理解和掌握,初试第一个mybatis程序。

根据官网文档。创造一个Maven项目并且在pom文件中进入如下必备的代码配置。


  org.mybatis
  mybatis
  x.x.x

当然初次之外还需要mysql依赖和一个测试junit依赖,配置后的pom为(最后一个是为了解决maven的小缺陷,我认为是小缺陷,文件过滤(之后再深入学习)没有这个的话,mapper.xml无法加载进target然后报错 )



    4.0.0


    org.example
    Mybatis_first_study
    pom
    1.0-SNAPSHOT
    
        mybatis-01
    
    

    
        
            org.mybatis
            mybatis
            3.5.2
        
        
            mysql
            mysql-connector-java
            5.1.36
        
        
            junit
            junit
            3.8.2
            test
        


    

    
        8
        8
    

    
        
        
            
                
                src/main/java
                
                
                    ***.xml
                
                
                
                    ***.properties
                    **
public class MybatisUtil {

    private 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();
    }

}

获得一个构造sqlsession的方法,

然后了解到一个mybatis-config.xml文件,XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源。于是被迫进行一个xml文件的配置。如下,这个放在resources下。(具体的文件结构一会给出,不过没有认真整理还是比较乱,希望大家养成良好的目录习惯)





    
        
            
            
                
                
                
                
            
        
    


    
        
    

跟jdbc的properties的配置非常像,driver包,url路径,username和pwd。并且在这要注意下面的一定要存在,每一个mapper.xml文件必须注册在核心配置文件中,不然就会报错,具体错误如下  Exception in thread "main" org.apache.ibatis.binding.BindingException: Type interface com.util.Mapper.UserMapper is not known to the MapperRegistry.

从 SqlSessionFactory 中获取 SqlSession

既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。如

try (SqlSession session = sqlSessionFactory.openSession()) {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
}

但这是古老的方式现在大多不这么使用。

现在的都是获取到一个mapper(官网提倡使用这种方法)

try (SqlSession session = sqlSessionFactory.openSession()) {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
}

对于mapper和sqlsession到底做了什么,我来白话一下。

简单来说sqlsession就是要执行在数据库的所有方法,但是这里引进了xml定义语句。1个语句既可以通过 XML 定义,也可以通过注解定义。我们先看看 XML 定义语句的方式,事实上 MyBatis 提供的所有特性都可以利用基于 XML 的映射语言来实现。

经过简单的实现完成一个mapper的配置。





    

namespace 对应着一个实体类,这个实体类所包含的成员对应着数据库的字段,并包含着getter和setter以及toString().

通过这个命名空间的映射就绑定住了一个接口文件,这个xml文件就类似于一个实现类、用全限名来调用映射语句就好像用全限定名调用一个java对象,这样,该命名就可以直接映射到在命名空间中同名的映射器类,并将已映射的 select 语句匹配到对应名称、参数和返回类型的方法。

与其绑定的Mapper类(接口)

package com.util.Mapper;

import com.util.doclass.teacher;

import java.util.List;


public interface UserMapper {
    List selectAll();

}

然后进行一下测试

package com.util;

import com.util.Mapper.UserMapper;
import com.util.doclass.teacher;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;


public class UserMapperTest {

    @Test
    public static void main(String[] args) {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List teachers = mapper.selectAll();
        for (teacher t1:teachers
             ) {
            System.out.println(t1);
        }


    }
}

获得成功!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号