Mybatis与hibernate的区别
Hibernate属于轻量级全自动全映射框架,sql语句也是封装处理的,如果想处理特殊的业务逻辑则需要学习hql语句,这无疑会加重我们的学习负担。
Mybatis属于轻量级半自动持久化层框架,即sql语句是由开发人员自己编写在配置文件中加载配置文件达到jdbc的作用,
Mybatis的下载地址
https://github.com/mybatis/mybatis-3
Mybatis的使用:第一步:我们需要一个核心配置文件:Mybatis-config.xml
最普通的配置就是
dataSource标签:数据源,里面写数据库的连接,驱动,账号,密码。
Mappers标签:加载所需的写入了sql语句的配置文件。
Mybatis框架使用的是面向接口编程所以我们还需要准备接口
package com.zking.dao;
import com.zking.pojo.User;
public interface UserMapper {
int deleteByPrimaryKey(Integer uid);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer uid);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
第二步:写一个有sql语句的配置文件如:
uid, username, userpwd
这个配置文件中要注意mapper标签中的 namespace要放你接口的相对路径
还有方法的id要与你的方法名相同
这个配置文件中写的是select方法需要特别注意的有sql标签以及include标签因为这两个标签与数据库的优化有关。
Select在sql语句中是经常被我们写的语句,每当类名过多时我们可能会将这些类名替换成一个*但是这种做法是不太好的,因为*在sql语句中代表的是所有,所以我们每用一次*都代表这数据库将它的所有东西都查询过了一次。所以说用*这种方法不可取,但是在SQL语句中select出现的次数又过多,如果类名比较多的话会比较麻烦,所以Mybatis框架给我们提供了一个sql标签,我们可以将这些列名存入到sql标签中然后通过include标签取出来使用。
注意:我们写jdbc时书写的sql语句进入预编译时它的占位符时?,在Mybatis中#{}代表占位符。
在Mybatis框架中关于sql配置文件还有许多标签:比如insert,delete,update即对应这CURD
这写标签中有两个属性需要注意:
result Type:这个代表着执行这个方法返回的类型
ParameterType:代表这执行这个方法需要放入的参数。
第三步:具体的使用
1:加载核心配置文件获得SqlSessionFactory对象:
String resource = "Mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
2:通过sqlsessionFactory获得sqlsession对象
SqlSession session=sqlSessionFactory.openSession();
try {
UserMapper um=session.getMapper(UserMapper.class);
User u1=um.selectByPrimaryKey(1);
} catch (Exception e) {
// TODO: handle exception
}finally {
session.close();
}
要注意sqlsession的线程是不安全的所以sqlsession是不能共享的所以使用一次就需要关闭一次。
以上就是我初学Mybatis框架所得到的心得。