MyBatis入门

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都自动完成

java 复制代码
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;
        }
    }
}
相关推荐
代码的余温27 分钟前
MyBatis集成Logback日志全攻略
java·tomcat·mybatis·logback
sun0077002 小时前
mysql索引底层原理
数据库·mysql
workflower4 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
Tony小周5 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
lifallen5 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
TDengine (老段)5 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Elastic 中国社区官方博客6 小时前
Elasticsearch 字符串包含子字符串:高级查询技巧
大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
Gauss松鼠会6 小时前
GaussDB应用场景全景解析:从金融核心到物联网的分布式数据库实践
数据库·分布式·物联网·金融·database·gaussdb
守城小轩6 小时前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis
尽兴-7 小时前
如何将多个.sql文件合并成一个:Windows和Linux/Mac详细指南
linux·数据库·windows·sql·macos