javaweb:mybatis:mapper(sql映射+代理开发+配置文件之设置别名、多环境配置、顺序+注解开发)

1.0版本 sql映射文件实现

流程

首先程序进入启动类MyBatisDemo.java中,读取配置文件mybatis-config.xml
再由mybatis-config的mappers属性


        
    

找到sql映射文件UserMapper.xml文件,通过其中的namespace属性


找到User类,并和数据库表做映射。

项目结构

javaweb:mybatis:mapper(sql映射+代理开发+配置文件之设置别名、多环境配置、顺序+注解开发)_第1张图片

User.java

package com.itheima.pojo;

public class User {
    String id;

    public String getId() {
        return id;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                '}';
    }
}

MyBatisDemo.java

package com.itheima;

import com.itheima.pojo.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.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisDemo {
    public static void main(String[] args) throws IOException {
        // 加载mybatis核心配置文件,获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // SqlSession,用它执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 执行sql
        List users = sqlSession.selectList("test.selectAll");
        System.out.println(users);
        // 释放资源
        sqlSession.close();
        }
    }


mybatis-config.xml





    
    
        
            
            
                
                
                
                
                
            
        
    

    
        
    


这里的


        
    

是因为UserMapper和mybatis-config同处于一个包,所以可以只写名字。但是如果UserMapper不和其同处于一个包的话,就需要写全路径。

UserMapper.xml





    



这里的namespace


相当于这个mapper文件的唯一标识,不能与其他mapper文件的重复,就相当于外面套了一个test包,在其他地方调用,譬如启动类MyBatisDemo.java中调用时,要用test.方法名。

2.0版本 mapper代理开发

注意

想在resources包下面创建多级目录,譬如"com.itheima.mapper",不能直接创建一个目录,然后名称写"com.itheima.mapper",这样只会默认创建一个"com.itheima.mapper"的目录,而不会自动分级。
如果想要自动分级,需要写"com/itheima/mapper"

整体流程

首先程序进入启动类MyBatisDemo中,读取配置文件mybatis-config.xml
再由mybatis-config的mappers属性


        
    

找到mapper包下面的mapper接口
因为mapper接口和sql映射文件属于同一个包层次结构,所以由mapper接口可以找到sql映射文件UserMapper.xml。再由其中的resultType字段

    
        select *
        from tb_user;
    



mybatis-config.xml




    
        
            
            
                
                
                
                
                
            
        
    

    
        
    


MyBatisDemo

package com.itheima;

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

import com.itheima.mapper.UserMapper;
import com.itheima.pojo.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;

public class MyBatisDemo {
    public static void main(String[] args) throws IOException {
        //加载mybatis核心配置文件,获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取UserMapper对象,用它直接执行sql方法
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Listusers = userMapper.selectAll();
        System.out.println(users);
        //释放资源
        sqlSession.close();
        }
    }


mybatis-config.xml




    
        
            
            
                
                
                
                
                
            
        
    

    

        
    



其中可以使用class=全类名,来找到mapper接口。

        

也可以使用包扫描的方式,来找到mapper接口。

        

mybatis-config.xml(设置别名+多环境配置+顺序)




    
    
    
        
    

    
    

        
            
            
                
                
                
                
                
            
        

        
            
            
                
                
                
                
                
            
        


    

    
        

        
    


mybatis-config.xml里面的属性是有顺序的,顺序如下:

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

3.0代码 注解开发

流程

和2.0 代理开发一样,但是xml文件里面不需要再写select属性,只需要在pojo的类上面加上对应的注解即可。

UserMapper.xml






UserMapper.java

package com.itheima.mapper;

import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {
    @Select("select * from tb_user")
    List selectAll();
}

你可能感兴趣的:(sql,mybatis,java,后端,web)