MyBatis入门-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
MyBatis是一款优秀的持久层框架用于简化JDBC开发
持久层
负责将数据保存到数据库的那一层代码
我们会将操作数据库的Java代码作为持久层而MyBatis就是对jdbc代码进行了封装。
JavaEE三层架构表现层、业务层、持久层
框架
是一个半成品软件。
MyBatis通过xml或注解的方式将要执行的各种statement配置起来并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句最后由MyBatis框架执行sql并将结果映射为java对象并返回。
采用“ORM”思想解决了实体和数据库映射的问题对JDBC进行了封装屏蔽了JDBC、API底层访问细节使我们不用与JDBC、API打交道就可以完成对数据库的持久化操作。
ORM
Object Relational Mapping对象关系映射
指的是持久化数据和实体对象的映射模式为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。
表——>类
记录record行数据——>对象
字段——>对象属性
JDBC缺点
1.硬编码、系统不易维护
注册驱动获取连接如果要将Mysql数据库换成其他关系型数据库的话四个地方都要修改
2.操作繁琐
要手动设置参数、封装结果集图标4的代码就是对查询到的数据进行封装这部分代码无技术含量且耗费时间。
MyBatis优化
硬编码可以配置到配置文件
操作繁琐的地方MyBatis都自动完成
public class UserInfoDaoImpl implements UserInfoDao {
@Override
public List<UserInfo> selectAll(){
try {
InputStream in=Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory=builder.build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
//有实现类对象的情况
List<UserInfo> userInfos = sqlSession.selectList("org.example.dao.UserInfoDao.selectAll");
return userInfos;
//没有实现类对象的情况
/**UserInfoDao mapper = sqlSession.getMapper(UserInfoDao.class);
List<UserInfo> userInfos1 = mapper.selectAll();
userInfos1.forEach(o-> System.out.println(o));*/
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}