Mybatis入门(一):入门案例


  • 特性
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架
  • 构建maven项目
# 导入依赖
    jar
    
        
        
            org.mybatis
            mybatis
            3.5.7
        
        
        
            junit
            junit
            4.12
            test
        
        
        
            mysql
            mysql-connector-java
            5.1.3
        
        
        
            log4j
            log4j
            1.2.17
        
    

# 编写mybits配置文件
<?xml version="1.0" encoding="UTF-8" ?>


    
        
            
            
                
                
                
                
            
        
    
    
    
        
    


# 创建实体类:getter和setter方法、构造器、toString方法
public class User {

    private Integer id;

    private String username;

    private String password;

    private Integer age;

    private String sex;

    private String email;

}

# 接口
public interface UserMapper {

    int insertUser();

}

# 映射文件
<?xml version="1.0" encoding="UTF-8" ?>



    
        insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
    



# 测试方法
    @Test
    public void testMyBatis() throws IOException {
        //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取mapper接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //测试功能
        int result = mapper.insertUser();
        //提交事务
        sqlSession.commit();
        System.out.println("result:"+result);
    }
  • 自动提交事务
    @Test
    public void testMyBatis() throws IOException {
        //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取SqlSession,设置为true表示自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //获取mapper接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //测试功能
        int result = mapper.insertUser();
        //提交事务
        //sqlSession.commit();
        System.out.println("result:"+result);
    }
  • 配置log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>


    
        
        
            
        
    
    
        
    
    
        
    
    
        
        
    


# 日志级别:FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)
  • resultType与resultMap
# 查询接口
User getUserById();

# 查询映射


# 查询功能的标签必须设置resultType或resultMap,resultType:设置默认的映射关系,resultMap:设置自定义的映射关系
  • environment

    
        
        
            
            
            
            
                
                
                
                
                
                
                
                
            
        

        
            
            
                
                
                
                
            
        
    
  • jdbc配置文件
# 编写jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

# mybatis配置文件中导入jdbc配置文件


# 使用${}引入配置
        
            
            
                
                
                
                
                
                
                
                
            
        
  • 核心配置文件中的标签必须按照固定的顺序
properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?
  • 类型别名
# mybatis配置文件中设置如下

        
        


# 之后就可以在mapper映射文件中使用
    

# 不区分大小写
    

# 方式2

    
    

  • 映射配置