IDEA如何构建mybatis
任何一个软件都要和数据库关联,软件需要的数据都存储在数据库中。
对于经常使用的数据库相关的代码就出现了很多冗余的代码,持久层框架也随之出现。
目前使用比较流程的持久层框架有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的更多相关文章
- Maven的学习资料收集--(八) 构建MyBatis项目
在这里,写一下,怎么使用Maven构建MyBatis项目. 1. 新建一个Web项目 可以参考前面的博客 2. 修改pom.xml,添加MyBatis依赖 <project xmlns=&quo ...
- maven学习5 构建MyBatis项目
2. 修改pom.xml,添加MyBatis依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...
- 从零开发分布式数据库中间件 二、构建MyBatis的读写分离数据库中间件
在上一节 从零开发分布式数据库中间件 一.读写分离的数据库中间件 中,我们讲了如何通过ThreadLocal来指定每次访问的数据源,并通过jdbc的连接方式来切换数据源,那么这一节我们使用我们常用的数 ...
- Mybatis架构学习
Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...
- 优化与扩展Mybatis的SqlMapper解析
接上一篇博文,这一篇来讲述怎么实现SchemaSqlMapperParserDelegate——解析SqlMapper配置文件. 要想实现SqlMapper文件的解析,还需要仔细分析一下mybatis ...
- 由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”
在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Myb ...
- Mybatis(一)实现单表的增删改查
1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...
- Mybatis集成到spring boot
1, Mybatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...
- 【转】Mybatis源码解读-设计模式总结
原文:http://www.crazyant.net/2022.html?jqbmtw=b90da1&gsjulo=kpzaa1 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开 ...
随机推荐
- 牛客练习赛53 A 超越学姐爱字符串 (DP)
牛客练习赛53 超越学姐爱字符串 链接:https://ac.nowcoder.com/acm/contest/1114/A来源:牛客网 超越学姐非常喜欢自己的名字,以至于英文字母她只喜欢" ...
- Codeforces 1175F The Number of Subpermutations
做法①:RMQ(预处理NLOGN+后续跳跃蜜汁复杂度) 满足题意的区间的条件转换: 1.长度为R-L+1则最大值也为R-L+1 2.区间内的数不重复 当RMQ(L,R)!=R-L+1时 因为已经保证了 ...
- django国际化的简单设置
设置国际化的具体步骤: 一.国际化 1)效果:针对不同的国家的人可以配置不同的语言(一般是英文和中文, English Chinese) 2)目的:增加项目的用户量 3)难度:不难 比较费劲的就是 ...
- python dict list 遍历的几种常见方法
list 遍历index,value list = ['one', 'two', 'three'] for i in list: print(list.index(i),i) #rangefor i ...
- Linux文件系统之复制文件cp(文件复制)
cp 命令(文件复制) cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件, ...
- Python 列表和元组 (2) 持续更新
数据结构就是数据的集合.Python最基本的数据结构就是序列,每个元素都会被分配一个元素的位置,也可以称为索引.注意索引都是从0开始的. Python包含6种内建的序列,分别是列表.元组.字符串.Un ...
- wavefronts
https://www.g-truc.net/post-0597.html https://michaldrobot.com/2014/04/01/gcn-execution-patterns-in- ...
- 前端知识体系:JavaScript基础-原型和原型链-实现继承的几种方式以及他们的优缺点
实现继承的几种方式以及他们的优缺点(参考文档1.参考文档2.参考文档3) 要搞懂JS继承,我们首先要理解原型链:每一个实例对象都有一个__proto__属性(隐式原型),在js内部用来查找原型链:每一 ...
- CF311B Cats Transport(斜率优化)
题目描述 Zxr960115 是一个大农场主.他养了m只可爱的猫子,雇佣了p个铲屎官.这里有一条又直又长的道路穿过了农场,有n个山丘坐落在道路周围,编号自左往右从1到n.山丘i与山丘i-1的距离是Di ...
- vue04 总结
""" 1.环境 node:官网下载安装包,傻瓜式安装 - https://nodejs.org/zh-cn/ => 附带按照了npm cnpm:npm insta ...