入门第一个MyBatis程序

简介

img

1.1什么是 MyBatis?

  • MyBatis 是一款优秀的持久层框架
  • 它支持定制化 SQL、存储过程以及高级映射。
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

如何获取MyBatis仓库?

  • maven仓库:配置文件

  org.mybatis
  mybatis
  3.5.2

  • GitHub:https://mybatis.org/mybatis-3/index.html
  • 中文文档地址: https://github.com/mybatis/mybatis-3

**1.2.**持久化

  • 数据持久化:持久化就是将程序在持久状态和瞬时状态转化的过程,是内存断点即失的表现,数据库(JDBC),io文件持久化。

1.3.持久层

  • 完成持久化工作的代码块。层界十分明显比如:Dao层,Service层,Controller层…

1.4使用Mybatis的好处

  • 简化传统JDBC代码。框架。自动化。帮助程序员将数据存入数据库中。
  • 实现sql和代码分离,提高可维护性
  • 提供映射标签,支持对象与数据的orm字段关系映射
  • 提供对象关系映射,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql

第一个MyBatis程序

**2.**搭建环境

1.搭建一个数据库

入门第一个MyBatis程序_第1张图片

sql语句:

CREATE DATABASE mybatis2;

USE mybatis2;

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,'李四','321654'),
(3,'王五','963741')

2.新建项目

2.1新建一个普通的maven项目
入门第一个MyBatis程序_第2张图片
入门第一个MyBatis程序_第3张图片
入门第一个MyBatis程序_第4张图片
2.2删除src目录作为一个父工程


入门第一个MyBatis程序_第5张图片

2.3设置maven的文件配置
入门第一个MyBatis程序_第6张图片
入门第一个MyBatis程序_第7张图片

2.4导入依赖

2.4.1依赖文件代码



    mysql
    mysql-connector-java
    5.1.46



    org.mybatis
    mybatis
    3.5.2



    junit
    junit
    4.12

3.创建一个模块

入门第一个MyBatis程序_第8张图片
入门第一个MyBatis程序_第9张图片
入门第一个MyBatis程序_第10张图片
入门第一个MyBatis程序_第11张图片
3.1编写mybatis的核心配置文件

入门第一个MyBatis程序_第12张图片
文件内容



    
    
        
            
            
            
                
                
                
                
            
        
    


配置数据库


入门第一个MyBatis程序_第13张图片
入门第一个MyBatis程序_第14张图片
编写数据库配置文件


    
    
    
    

4.编写mybatis工具类


入门第一个MyBatis程序_第15张图片
代码:提取为工具类

 //SqlSessionFactory  SQL会话工厂,
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            //使用Mybatis第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";//初始获取一个资源  直接读取
            InputStream inputStream = Resources.getResourceAsStream(resource);//用获取资源作为流
             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//通过这个build去加载这个流进来
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//既然有了SqlSessionFactory顾名思义,我们就可以获取SqlSession的实例。
// SqlSession完全包含了面向数据库执行SQL命令所需要的所有方法。可以通过SqlSession实例来直接执行已映射的SQL语句
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession; 
    }
}

5.编写代码:

  • 实体类

    //实体类
    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层编写一个接口Userdao
    入门第一个MyBatis程序_第16张图片
    入门第一个MyBatis程序_第17张图片

  • 接口实现类UserMapper.xml配置文件













    
    


6.测试 junit:

public class UserDaoTest {
    @Test
    public void test(){
        //第一步:获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //执行SQL 方式一:getMapper
        Userdao mapper = sqlSession.getMapper(Userdao.class);
        List userList = mapper.getUserList();
        for (User user : userList) {

            System.out.println(user);
        }
sqlSession.close();

    }
}

运行时会出现一个错误

绑定异常,这个文件没有被注册

org.apache.ibatis.binding.BindingException: Type interface org.westor.dao.Userdao is not known to the MapperRegistry.

解决方式:更改核心配置文件注册Mapper

再一次运行会出现一个初始化错误的异常

解决方式:配置一段代码 在 build中配置resources,来防止我们资源导出失败的问题-



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

运行时还是出现初始化异常时ExceptionInInitializerError可以删除接口的xml文件的注解

解决问题

7.可能遇到的问题

1.配置文件没有注册

2.绑定接口错误

3.方法名不对

4.返回类型不对

5.Maven导出资源问题

6.接口.xml文件不能注释(有可能是idea的问题)

你可能感兴趣的:(入门第一个MyBatis程序)