Mybatis学习(一)使用入门

目录

一、概述

二、安装

三、mybatis的使用 

1.创建maven工程,pom.xml导入坐标。

  2. 创建实体类和Dao的接口。

  3.创建Mybatis的配置文件 SqlMapConifg.xml(位置:src ==>main==>resources)

4.创建映射文件 UserDao.xml(包含了 SQL 代码和映射定义信息)

(映射器mapper中resource=映射文件的路径)

四、构建SqlSessionFactory  

1.从 Mybatis的配置文件XML 中构建 SqlSessionFactory 

2.不使用 XML 构建 SqlSessionFactory

3.从 SqlSessionFactory 中获取 SqlSession


一、概述

MyBatis 是持久层框架。

MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索,开发者只需关注SQL语句本身。

MyBatis 使用ORM(Object Relational Mapping  对象关系映射,数据库表和实体类对应起来,可以操作实体类就实现操作数据库表)。

https://mybatis.org/mybatis-3/zh/index.html

二、安装

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。

如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

 
	org.mybatis 
	mybatis 
	x.x.x 

三、mybatis的使用 

1.创建maven工程,pom.xml导入坐标。


          org.mybatis
          mybatis
          x.x.x

  2. 创建实体类和Dao的接口。

package com.mybatis.domain;
public class User {
    private Integer id;
    private String username;
    private String password;
    private String email;
package com.mybatis.dao;
import com.mybatis.domain.User;
import java.util.List;
/**
* @Description: 用户持久层接口
*/
public interface UserDao {
    //查询所有操作
    List findAll();
}

==============================================

package com.mybatis.dao;
import com.mybatis.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @Description: 用户持久层接口
*/
public interface UserDao {

//使用注解,不需要映射文件,在主配置文件的中用class属性指定被注解的dao接口的全限定类名
    //查询所有操作
    @Select("select * from user")
    List findAll();
}

 

  3.创建Mybatis的配置文件 SqlMapConifg.xml(位置:src ==>main==>resources)

Mybatis学习(一)使用入门_第1张图片



configuration(配置)

  • properties(属性)
  • settings(设置)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境配置)
    • environment(环境变量)
      • transactionManager(事务管理器
      • dataSource(数据源
  • databaseIdProvider(数据库厂商标识)
  • mappers(映射器)





    
    
        
        
            
            
            
            
                
                
                
                
                
            
        
    

    
    
        
        
             
             
    

4.创建映射文件 UserDao.xml包含了 SQL 代码和映射定义信息

(映射器mapper中resource=映射文件的路径)

(src==>main==>resources==>com==>mybatis==>dao==>UserDao.xml,

mybatis的映射配置文件位置必须dao接口的包结构相同)

在一个 XML 映射文件中,可以定义无数个映射语句。也可以不用映射文件,使用注解配置

使用注解:把映射文件移除,在dao接口的方法上使用@Select注解,并指定SQL语句。同时在配置文件中的mapper配置时,使用class属性指定dao接口的全限定类名。


        

SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):

  • cache – 该命名空间的缓存配置。
  • cache-ref – 引用其它命名空间的缓存配置。
  • resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
  • parameterMap – 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。
  • sql – 可被其它语句引用的可重用语句块。
  • insert – 映射插入语句。
  • update – 映射更新语句。
  • delete – 映射删除语句。
  • select – 映射查询语句。





    
    

注意事项:

1.创建UserDao.xml和UserDao.java时名称是为了和之前学的知识保存一致。在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper。所以UserDao和UserMapper是一样的。

2.目录directory里创建com.mybatis.first是一级目录。

包package里创建com.mybatis.first是三级目录。

3.mybatis的映射配置文件位置必须和dao接口的包结构相同。

4.映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名。

5.映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名。

当遵从了3,4,5点之后,我们在开发中就无须再写dao的实现类

项目的结构:

Mybatis学习(一)使用入门_第2张图片

MybatisTest

package com.mybatis;
import com.mybatis.dao.UserDao;
import com.mybatis.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 org.apache.log4j.lf5.util.Resource;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import static org.apache.ibatis.io.Resources.getResourceAsStream;
/*Mybatis入门案例*/
public class MybatisTest {
    public static  void main(String[] args) throws IOException {
        //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接口的代理对象
        UserDao userDao=session.getMapper(UserDao.class);
        //5.使用代理对象执行Dao的某方法
        List users=userDao.findAll();
        for (User user:users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();

    }
}

 

//1.读取配置文件
//2.创建SqlSessionFactory工厂
//3.使用工厂生产SqlSession对象
//4.使用SqlSession创建Dao接口的代理对象
//5.使用代理对象执行Dao的方法
//6.释放资源

使用接口的实现类,mybatis它是支持写dao实现类的

public class UserDaoImpl implements IUserDao {

//首先从外部传入SqlSessionFactory
    private SqlSessionFactory factory;
    public UserDaoImpl(SqlSessionFactory factory) {
        this.factory = factory;
    }

    public List findAll() {
        //1.使用工厂创建SqlSession对象
        SqlSession session = factory.openSession();
        //2.使用session执行查询所有方法
        List users = session.selectList("com.zzq.dao.IUserDao.findAll");
        session.close();
        return users;
    }
}

=========================================================================

public class MyBatisTest {
    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂创建dao对象
        IUserDao userDao = new UserDaoImpl(factory);
        //4.执行方法
        List users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
        //5.释放资源
        in.close();
    }
}

 

四、构建SqlSessionFactory  

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的,SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。

而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

1.从 Mybatis的配置文件XML 中构建 SqlSessionFactory 

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。

MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

//1.读取配置文件
InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);

2.不使用 XML 构建 SqlSessionFactory

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();

TransactionFactory transactionFactory = new JdbcTransactionFactory();

Environment environment = new Environment("development", transactionFactory, dataSource);

Configuration configuration = new Configuration(environment);

configuration.addMapper(BlogMapper.class);

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

3.从 SqlSessionFactory 中获取 SqlSession

SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句

第一种方法:全限定名调用 

SqlSession session = factory.openSession();

UserDao userDao = session.selectOne(“com.mybatis.dao.UserDao.findAll”);

第二种方法: 

//3.使用工厂生产SqlSession对象
        SqlSession session =factory.openSession();
  //4.使用SqlSession创建Dao接口的代理对象
        UserDao userDao=session.getMapper(UserDao.class);
  //5.使用代理对象执行方法
        List users=userDao.findAll();
        for (User user:users){
            System.out.println(user);
        }

 

 

 

 

你可能感兴趣的:(mybatis)