任何一个软件都要和数据库关联,软件需要的数据都存储在数据库中。

对于经常使用的数据库相关的代码就出现了很多冗余的代码,持久层框架也随之出现。

目前使用比较流程的持久层框架有hibernate和mybatis等。这次介绍下如何搭建使用mybatis框架。

工具介绍

  • IDEA开发工具
  • maven开发工具
  • MariaDB数据库

首先创建Maven项目配置pom.xml添加Mybatis依赖包

作者在此使用的数据库是MariaDB,所有也需要添加依赖包

 mybatis数据库配置。对于mybatis框架来说,首先需要配置的就是数据库的数据源配置以及

采用何种开发模式的配置,对于mavne项目来说这些资源信息都需要配置在src/main/resources下面,

对于普通的java项目则只需要配置在src下即可。

mybatis-config.xml的配置。在src/main/resources/下创建一个名为mybatis-config的文件。

在文件中需要配置resources数据库资源文件,

数据库链接需要的driver驱动、url连接串、username数据库用户名、password数据库密码等。

 数据库信息的配置。根据mybatis-config配置中的resources文件引入,

需要创建一个jdbc.properties文件的配置。

同样是在src/main/resources资源文件夹下新建properties文件。

配置url/driver/username/password。

接下来就是实体类了

创建java对象。根据数据库表或者某些表的字段配置一个java对象。

mybatis可以根据框架将表中的数据自动转成对象。

创建实体类实现get、set方法

编写对应的接口需要操作的功能

在此演示一个Customer类

编写好实体类以及接口然后就配置对应的映射文件了

配置xml映射文件。在resources包下创建mapper文件夹然后创建与接口对象同名的.xml文件,配置java与数据库之间交互的方法。主要配置的有namespace、

sql语句

 

映射文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.nf147.dao.CustomerDAO"> <select id="queryAll" resultType="Customer">
select * from Customer
</select> <select id="queryById" resultType="Customer">
select * from Customer where CustomerId = #{CustomerId}
</select> </mapper>

配置好xml之后,需要在mybatis-config中将这个xml添加到mappers中,这样项目启动的时候才能加载到这些sql脚本。 

创建加载mybatis配置文件的类。可以通过mybatis框架自带的一些类加载xml配置文件,

根据factory获取一个session,通过session执行对应脚本的sql语句。

对于执行insert或者update语句需要在最后执行session.commit进行提交操作。

创建方法

public Object queryAll(){

        String resource = "/mybatis-config.xml";
InputStream inputStream = Resources.class.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession();
Object o = sqlSession.selectList("com.nf147.dao.CustomerDAO.queryById",1);
sqlSession.commit();
sqlSession.close();
return o;
}

然后编写测试类

针对于一些结果集渲染方法

使用resultMap
 <!--映射 Invoice表与BillingInfo-->
<resultMap id="invoiceInfo" type="Invoice" autoMapping="true">
<association property="billingInfo" javaType="BillingInfo" autoMapping="true">
<id property="BillingId" column="InvoiceId"></id>
</association>
</resultMap>
<!--映射Customer-->
<resultMap id="customer" type="Customer" autoMapping="true">
<collection property="invoices" ofType="Invoice" resultMap="invoiceInfo"></collection>
</resultMap>
<select id="getInvoiceInfo" resultMap="invoiceInfo">
SELECT
c.*,
i.InvoiceId,
i.InvoiceDate,
i.BillingAddress,
i.BillingCity,
i.BillingState,
i.BillingCountry,
i.BillingPostalCode,
i.Total
FROM Customer c LEFT JOIN Invoice I ON c.CustomerId = I.CustomerId
where i.InvoiceId = #{InvoiceId}
</select> <select id="queryById" resultMap="customer">
SELECT
c.*,
i.InvoiceId,
i.InvoiceDate,
i.BillingAddress,
i.BillingCity,
i.BillingState,
i.BillingCountry,
i.BillingPostalCode,
i.Total
FROM Customer c LEFT JOIN Invoice I ON c.CustomerId = I.CustomerId
where C.CustomerId = #{CustomerId}
</select>

IDEA如何构建mybatis的更多相关文章

  1. Maven的学习资料收集--(八) 构建MyBatis项目

    在这里,写一下,怎么使用Maven构建MyBatis项目. 1. 新建一个Web项目 可以参考前面的博客 2. 修改pom.xml,添加MyBatis依赖 <project xmlns=&quo ...

  2. maven学习5 构建MyBatis项目

    2. 修改pom.xml,添加MyBatis依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...

  3. 从零开发分布式数据库中间件 二、构建MyBatis的读写分离数据库中间件

    在上一节 从零开发分布式数据库中间件 一.读写分离的数据库中间件 中,我们讲了如何通过ThreadLocal来指定每次访问的数据源,并通过jdbc的连接方式来切换数据源,那么这一节我们使用我们常用的数 ...

  4. Mybatis架构学习

    Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...

  5. 优化与扩展Mybatis的SqlMapper解析

    接上一篇博文,这一篇来讲述怎么实现SchemaSqlMapperParserDelegate——解析SqlMapper配置文件. 要想实现SqlMapper文件的解析,还需要仔细分析一下mybatis ...

  6. 由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”

    在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Myb ...

  7. Mybatis(一)实现单表的增删改查

    1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...

  8. Mybatis集成到spring boot

    1, Mybatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

  9. 【转】Mybatis源码解读-设计模式总结

    原文:http://www.crazyant.net/2022.html?jqbmtw=b90da1&gsjulo=kpzaa1 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开 ...

随机推荐

  1. 前端使用 node-gyp 构建 Native Addon

    前端轮子千千万, 但还是有些瓶颈, 公司需要在前端调用自有 tcp 协议, 该协议只有 c++ 的封装版本. 领导希望可以直接调该模块, 不要重复造轮子. 实话说我对 C 还有点印象, 毕竟也是有二级 ...

  2. 通过快捷方式lnk获得文件真实路径

    通过快捷方式.lnk获得文件真实路径前提最近开发资源管理,需要预先上传大量资源,负责整理资源的同学因为空间不足,直接用快捷键方式整理视频资源OTZ,所以只能想办法通过.lnk文件获得文件的真实地址. ...

  3. meta 中的属性viewport

    粘贴自:https://blog.csdn.net/u012402190/article/details/70172371 <meta name="viewport" con ...

  4. .net面试题——20190718

    文章:Dapper.Net实现增删改查 autofac automap 异步 委托 依赖注入

  5. Java&Selenium自动化测试实现页面元素、页面对象及测试代码分离

    一.摘要 本篇博文将介绍自动化测试实现页面元素.页面对象及测试代码分离在自动化框架中的实现 二.解析页面元素定位信息 首先,将页面元素与实际的代码分离,首先我们将页面元素定位信息和定位表达式保存在属性 ...

  6. 低级键盘钩子,在WIN7以上版本的问题

    最近在项目用到低级键盘钩子.发现一个很奇怪的事情,在开发环境和测试环境下都正常运行的键盘钩子, 到了现场环境,总是偶发性出现 键盘钩子不能用了,而且退出时产生1404 错误. 后经过阅读MSDN 的R ...

  7. [转载]pytest学习笔记

    pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...

  8. CloseableHttpClient设置超时

    Java开发我们常常需要和第三方系统进行通信,通信的方式有多种,如dubbo方式,webservice,微服务和CloseableHttpClient等方式,常涉及到超时问题,这里主要说的是Close ...

  9. lumen 队列处理

    数据库要使用 database 队列驱动,你需要数据表保存任务信息(比如失败任务).要生成创建这些表的迁移,可以在项目目录下运行 Artisan 命令 queue:table,迁移被创建之后,可以使用 ...

  10. 分布式协调框架_Zookeeper

    Zookeeper 如今在分布式架构中应用十分广泛,它作为分布式协调框架在分布式架构中有着举足轻重的地位,本文是主要从以上几个方面对 Zookeeper 常用的知识进行总结. 一 从集中式到分布式架构 ...