Mybatis入门第一天笔记

1.什么是框架:它是我们软件开发中的一套解决方案,
不同框架解决的是不同的问题。
2.三层架构
表现层:(view和control层)用来展示的层。SpringMVC
业务层:实现的业务逻辑。
持久层:(Dao)和数据库交互的。MyBatis
Spring是在各个层都有控制的。
3.持久层技术解决方案
JDBC:
Connection
PreparedStatement
ResultSet
Spring的jdbcTemplate:
Spring中对jdbc的简单规范
Apache的DButils:
它和Spring的JdbcTemplate很像,也是对JDBC的简单封装

以上这些都不是框架
			jdbc是规范
			Spring的jdbcTemplate和Apache的DBUtils都只是工具类

4.MyBatis框架概述
Mybatis是一个持久层框架,封装了JDBC中很多细节,开发者只需要关注sql语句本身,无需关注注册驱动,
创建连接等过程,它使用了ORM思想实现了结果集的封装。

**ORM**(Object Relational Mapping)对象关系映射
	
简单的说:就是把数据库和实体类以及实体类的属性对应起来,让我们可以操作
实体类就能操作数据表。

5.mybatis的入门
1.mybatis的环境搭建
第一步:建立数据库表user,创建maven工程并且配置了pom.xml

  
        
            org.mybatis
            mybatis
            3.4.5
        
        
            mysql
            mysql-connector-java
            5.1.6
        
        
            log4j
            log4j
            1.2.12
        
        
            junit
            junit
            3.8.1
        
    
	第二步:创建表的实体类和Dao接口
	第三步:配置mybatis的主配置文件SqlMapConfig.xml
			




	
	
		
			
			
			
			
				
				
				
				
			
		
	
	
	
		
	

	第四步:创建映射配置文件
			

	
	 
		
		
```**加粗样式**
	**注意:第一点:mybatis的映射配置文件(指下文中的IUserDao.xml)位置必须和Dao接口(指下文中的IUserDao接口)的包结构相同
		  第二点:映射配置文件的mapper标签namespace属性的接口必须是Dao接口的全限定类名
		  第三点:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名。
	当我们遵从了第三第四,五点之后,我们在开发中就不用写Dao的实现类。**

2.mybatis的入门案例:

这是实体类User

package com.itheima.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable{
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "user{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

这是与实体类对应的Dao接口

package com.itheima.dao;

import com.itheima.domain.User;

import java.util.List;

public interface IUserDao {
    /*
        查询所有操作
     */
    List findAll();
}

这个是上文说的映射配置文件,它是创建在resources中的,它的目录和上文中的IUserDao一样。



 
    
    

这是mybatis的核心配置文件:




    
    
        
            
            
            
            
                
                
                
                
            
        
    
    
    
        
    

这是测试类:
写在test下的java中

package com.ithema.test;

import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
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.InputStream;
import java.util.List;

/*
mybatis入门案例
 */
public class MybatisTest {
    public static void main(String[] args)throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao=session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List users = userDao.findAll();
        for (User user:users
             ) {
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

各个文件在idea中的分布图如图所示:
Mybatis入门第一天笔记_第1张图片

你可能感兴趣的:(Mybatis入门第一天笔记)