MyBatis(上)

一、mybatis简介

一种持久层框架,封装了jdbc,用于访问数据库和操作数据库中的数据。

二、优点

1、支持定制化SQL语句、存储过程和高级映射

2、几乎避免所有jdbc代码和手动设置参数和获取结果集的情况

3、可以通过xml或注解的方式配置映射,将接口和普通的java类的对象映射成数据库中的数据

4、半自动ORM(对象/关系映射)框架

三、搭建步骤

1、创建java项目

2、导入jar包,包含

hamcrest-core-1.3.jar 搭配junit

junit-4.12.jar 用于Java的单元测试的包

mybatis-3.5.6.jar mybatis核心包

mysql-connector-java-5.1.37-bin.jar jdbc用于连接数据库的包

3、创建mybatis核心配置文件,一般命名为mybatis-config.xml,用于设置连接数据库的环境和mybatis的一些相关配置

4、创建映射文件xxxMapper.xml,主要用于编写MySQL语句

5、创建mybatis操作sql的对象sqlSession

1)读取mybatis核心配置文件,使用getResourceAsStream

2)创建sqlSessionFactoryBuilder对象

3)通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象

SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);

4)获取sqlSession对象,看需求是否添加true参数

//通过该对象操作sql语句时需手动提交和回滚事务
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过该对象操作sql语句时可自动提交和回滚事务
SqlSession sqlSession = sqlSessionFactory.openSession(true);

5)创建xxxMapper接口,不需要实现类,相对应的sql语句在xml文件中编写

6)使用mybatis的面向接口编程执行增删改查的操作

根据sqlSession的getMapper方法,参数为所选接口的接口类对象,例如获取DynamicSQLMapper

DynamicSQLMapper mapper = sqlSession.getMapper(DynamicSQLMapper.class);

获取后直接用 mapper.接口方法 使用对数据库相关操作

7)可以加入log4j的jar包和配置文件来查看日志信息

四、mybatis的核心配置文件

固定顺序

properties? 引入properties文件,方便之后使用${属性名}来访问属性值

settings? 设置将表中字段转换为驼峰

typeAliases? 设置别名,配置后若为自定义则为默认的别名,即类名且不区分大小写

typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?

environments? 配置环境,包括数据库类型、数据库名、事务管理器(jdbc)、数据源等

,databaseIdProvider?,

mappers? 引入映射文件,扫描映射文件所在的包

一般标签作用



    
    

	
        
        
        
        
    

	
        
        
        
        
        
    

    
    
        
        
            
            
            
            
                
                
                
                
                
                
                
                
            
        
    
    
    
        
        
        
    

五、mybatis的增删改查

在xxxMapper.xml中配置,增删改操作相似,例如增



    insert into t_user values(null,'admin','123456',23,'男')

在查询操作中,在标签中需要设置映射方式,包括resultType和resultMap,其值为bean实体类的全类名。

resultType:自动映射,用于属性名和表中字段名一致的情况

resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况


六、mybatis获取参数的两种方式

${}#{}

${}:使用字符串填充,不会自动添加单引号

#{}:使用占位符填充,会自动添加单引号,可有效防止sql注入

你可能感兴趣的:(SSM框架)