当前位置: 首页 > 科技观察

JavaMybatis框架入门教程

时间:2023-03-13 04:42:21 科技观察

一、Mybatis介绍MyBatis是一个优秀的持久化框架,支持自定义SQL、存储过程和高级映射。MyBatis去掉了几乎所有的JDBC代码,基本不需要手动设置参数和获取检索结果。MyBatis可以使用简单的XML格式或注解进行配置,并且可以将基本数据元素、Map接口和POJO(普通java对象)映射到数据库中的记录。2、MyBatis工作流程(1)加载配置和初始化触发条件:加载配置文件配置来自两个地方,一个是配置文件,一个是Java代码注解,将SQL配置信息加载到MappedStatement对象中(包括传入参数映射配置、执行SQL语句、结果映射配置),保存在内存中。(2)接收调用请求的触发条件:调用Mybatis提供的API,传入参数:SQLID,传入参数对象处理过程:将请求传递给下层请求处理层进行处理。(3)处理操作请求触发条件:API接口层将请求传递给传入参数:SQLID和传入参数对象处理过程:(A)根据SQLID找到对应的MappedStatement对象。(B)根据传入的参数对象解析MappedStatement对象,得到最终要执行的SQL,执行传入的参数。(C)获取数据库连接,根据得到的最终SQL语句和执行输入参数执行数据库,得到执行结果。(D)根据MappedStatement对象中的结果映射配置,对得到的执行结果进行转换处理,得到最终的处理结果。(E)释放连接资源。(4)返回处理结果返回最终的处理结果。orm工具的基本思想,不管你用过hibernate还是mybatis,都可以看出它们有一个共同点:sessionfactory是从配置文件(通常是xml配置文件)中获取的。session由sessionfactory生成,数据添加到session中。删除、修改、检查和交易提交等。使用后关闭会话。java对象和数据库之间的映射有一个配置文件,通常是一个xml文件。功能架构Mybatis的功能架构分为三层:API接口层:对外提供的接口API,开发者使用这些本地API来操作数据库。一旦接口层收到调用请求,就会调用数据处理层完成具体的数据处理。数据处理层:负责具体的SQL查找、SQL解析、SQL执行及执行结果映射处理等,其主要目的是根据调用请求完成一次数据库操作。基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载、缓存处理等。这些都是普通的东西,提取出来就是最基本的组件。为上层数据处理层提供最基础的支持。更多需要添加的驱动包:下面快速入门:目录如下:EntityclassUserpackagecom.oumyye.model;公共类用户{私有字符串id;私有字符串名称;私人年龄;publicStringgetId(){返回ID;}publicvoidsetId(Stringid){this.id=id;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){返回年龄;}publicvoidsetAge(intage){this.age=age;}@OverridepublicStringtoString(){return"User[id="+id+",name="+name+",age="+age+"]";}}映射文件UserMapping.xmlselect*fromuserwhereid=#{id}资源文件mybatis.xml<属性号ame="username"value="root"/>测试类:packagetest;importjava.io.InputStream;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Test;importcom.oumyye.model.User;publicclassTests{@Testpublicvoidtest(){Stringresource="mybatis.xml";//使用类加载器加载mybatis的配置文件(同时加载关联的映射文件)InputStreamis=Tests.class.getClassLoader().getResourceAsStream(resource);//构建sqlSession工厂SqlSessionFactorysessionFactory=newSqlSessionFactoryBuilder().build(is);SqlSessionsession=sessionFactory.openSession();/***映射sql标识字符串,*com.oumyye.mapping.UserMapping是我们erMapper.xml文件中mapper标签的namespace属性的值,*getUser是select标签的id属性值,通过select标签的id属性值可以找到要执行的SQL*/Stringstatement="com.oumyye.mapping.UserMapping.getUser";//映射sql标识字符串//执行查询返回唯一用户对象的sqlUseruser=session.selectOne(statement,"1123");System.out.println(user.toString());}}结果: