第一个Mybatis程序

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。

1.2如何获取Mybatis?

maven仓库:




    org.mybatis
    mybatis
    3.5.2

Github:https://github.com/mybatis/mybatis-3/releases

中文文档:https://mybatis.org/mybatis-3/zh/index.html

1.2持久化

数据持久化

  • 持久化就是指将程序的数据在持久状态和瞬时状态转化的过程
  • 内存:断电即失
  • 数据库(Jdbc),io文件持久化
  • 生活:冷藏、罐头

为什么需要持久化?

  • 有一些对象,不能让它丢掉
  • 内存太贵了

1.3持久层

Dao层,Service层,Controller层...

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

1.4为什么需要Mybatis?

  • 方便、帮助程序员将数据存入到数据库中
  • 传统的JDBC代码太复杂了。简化。框架。
  • 不用Mybatis也可以。更容易上手。技术没有高低之分
  • 简单易学灵活
  • sql和代码分离,提高了可维护性
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组件维护
  • 提供xml标签,支持编写动态sql
  • 最重要的一点:使用的人很多!

2、第一个Mybatis程序

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

2.1、搭建环境

搭建数据库:

create databse 	`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,'张三','123'),
(2,'李四','123'),
(3,'王五','123')

新建项目:

  • 新建一个普通的Maven项目
  • 删除Src目录
  • 导入依赖:
 
        
            mysql
            mysql-connector-java
            5.1.46
        
        
        
            org.mybatis
            mybatis
            3.5.2
        

        
        
            junit
            junit
            4.12
        

2.2创建一个模块

  • 编写mybatis的核心配置文件:mybatis-config.xml




    
        
            
            
            
                
                
                
                
            
        
    
  • 编写mybatis工具类
public class MybatisUtil {
    private static  SqlSessionFactory sqlSessionFactory ;
    static {
        try {
            //使用Mybatis第一步:创建sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession
     * 提供了在数据库执行 SQL 命令所需的所有方法
     */
    public static SqlSession getSqlsession(){
        return sqlSessionFactory.openSession();
    }

}

2.3编写代码

  • 实体类
  • public class User {
    
      private long id;
      private String name;
      private String pwd;
    
      public User() {
      }
    
      public User(long id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
      }
    
      public long getId() {
        return id;
      }
    
      public void setId(long 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 + '\'' +
                '}';
      }
    
      @Override
      public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return id == user.id &&
                Objects.equals(name, user.name) &&
                Objects.equals(pwd, user.pwd);
      }
    
      @Override
      public int hashCode() {
        return Objects.hash(id, name, pwd);
      }
    }
    

     

Dao接口

  • public interface UserDao {
        List getUserList();
    }

     

  • 接口实现类由原来的Impl转换为一个Mapper配置文件




    
    

2.4测试

Junit

public class UserDaoTest {
    @Test
    public void Test(){
        //获得sqlSession对象
        SqlSession sqlsession = MybatisUtil.getSqlsession();
        try {
            //执行SQL
            //方式一:getMapper
            UserDao mapper = sqlsession.getMapper(UserDao.class);
            List userList = mapper.getUserList();
            //方式二:
//        List userList = sqlsession.selectList("com.aostarit.dao.UserDao.getUserList");
            for (User user : userList) {
                System.out.println(user);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭sqlSession
            sqlsession.close();
        }
    }
}

可能会遇到的问题

  • 配置文件没有注册
  • 绑定接口错误
  • 方法名不对
  • 返回类型不对
  • Maven导出资源问题

你可能感兴趣的:(Mybatis)