什么是mybatis?mybatis的作用?
Mybatis是半自动化持久型框架,可以支持定制sql,存储过程,高级映射。
在JDBC基础上进行改进,因为JDBC中sql语句与java代码融合在一起,耦合度高,不易于修改优化,于是Mybatis就将所有sql语句使用xml配置文件的方式进行解耦,这样将java代码与sql分开,结构清晰便于优化。
mybatis提供简单的crud,可以手动设置参数获取结果集,并且可以自动将java中的属性与数据库的字段形成映射。
如何搭建Mybatis框架?
- 使用maven导入mybatis依赖
- 使用mysql创建数据库,生成表并插入数据
- 根据数据库中的表在idea中创建对应的JavaBean
- 使用接口式编程,创建mapper接口,在接口中创建crud抽象方法,并设置封装结果集的返回值
- 在idea中resoures资源文件夹下创建mybatis-config.xml全局配置文件,用于配置settings,properties,数据库连接信息
- 在resoures资源文件夹下创建mapper.xml映射文件,这里使用命名空间规则,namespace对应接口全类名,crud标签的id 对应接口中的方法名,resultType对应返回值类型若返回值为javaBean类型直接写全类名,具体sql查询语句写在crud标签体里。
- 编写测试类,获取配置类信息,生成SqlSessionFactoryBeanBuilder,构建出SqlSessionFactory实例,在创建出SqlSession对象直接调用接口中写好的crud方法
public class HelloWorldTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "c01/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
* 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
* 3、将sql映射文件注册在全局配置文件中
* 4、写代码:
* 1)、根据全局配置文件得到SqlSessionFactory;
* 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
* 一个sqlSession就是代表和数据库的一次会话,用完关闭
* 3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
*
* @throws IOException
*/
@Test
public void test() throws IOException {
// 2、获取sqlSession实例,能直接执行已经映射的sql语句
// sql的唯一标识:statement Unique identifier matching the statement to use.
// 执行sql要用的参数:parameter A parameter object to pass to the statement.
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try {
Employee employee = openSession.selectOne(
"abc.getEmpById", 1);
System.out.println(employee);
} finally {
openSession.close();
}
}
}