一种持久层框架,封装了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包和配置文件来查看日志信息
固定顺序
properties? 引入properties文件,方便之后使用${属性名}来访问属性值
settings? 设置将表中字段转换为驼峰
typeAliases? 设置别名,配置后若为自定义则为默认的别名,即类名且不区分大小写
typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?
environments? 配置环境,包括数据库类型、数据库名、事务管理器(jdbc)、数据源等
,databaseIdProvider?,
mappers? 引入映射文件,扫描映射文件所在的包
一般标签作用
在xxxMapper.xml中配置,增删改操作相似,例如增
insert into t_user values(null,'admin','123456',23,'男')
在查询操作中,在标签中需要设置映射方式,包括resultType和resultMap,其值为bean实体类的全类名。
resultType:自动映射,用于属性名和表中字段名一致的情况
resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
${}和#{}
${}:使用字符串填充,不会自动添加单引号
#{}:使用占位符填充,会自动添加单引号,可有效防止sql注入