叨叨时刻:内容根据阿里云大学的MyBatis视频教程整理而成,有需要最好跟着视频教程走一遍

MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

其他说明:

(1)持久化:数据从瞬时状态变为持久状态,可以简单理解成和服务器端session一样的作用

(2)官网中文文档:mybatis中文文档

(3)其他参考网站:w3cshool的Mybatis教程

搭建框架步骤:

1.下载MyBatis的类包:mybatis-x.x.x.jar (内含官方文档)

2.新建java项目并将核心包和依赖包(bin内的jar)、数据库驱动包导入

3.根据官方文档,新建配置xml文件,以官方文档(2.1.2 Building SqlSessionFactory from XML)为模板修改相关的数据库连接信息。例如:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!---->
<typeAliases> </typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="myPassword"/>
</dataSource>
</environment>
</environments>
//这里的mapper路径包名要以斜杆分,且这里的内容要以后面编写的mapper文件相对应
<mappers>
<mapper resource="cn/aaa/entity/User.mapper.xml"/>
</mappers>
</configuration>

4.建立对应MyBatis工具类,参考官方文档内容(2.1.2 Building SqlSessionFactory from XML),例如:

public class MyBatisUtil {
public static SqlSessionFactory getSqlSessionFactory() throws IOException {
//注意:这里的recource内容请更改成自己的mybatis配置的xml名字,如果xml文件名字是aaaa.xml,以下内容也写成aaaa.xml
String resource = "mybatis.config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//记得返回对象
return sqlSessionFactory;
}
public static SqlSession getSession() throws IOException {
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
return sqlSessionFactory.openSession();
}
}

5.建立实体类User

6.建立实体类sql语句的映射xml文件(最好与实体类处于同一目录下,显得更加清晰),参考官方文档(2.1.5 Exploring Mapped SQL Statements),例如:

<mapper namespace="cn.aaa.entity.UserMapper">
<!--此处的resultType最好写成包名+类名的形式,这样更准确>
<select id="selectUser" resultType="cn.aaa.entity.User">
<!-- sql映射语句 -->
select * from users where id = #{id}
</select>
</mapper>

7.新建测试类,主方法里获取MyBatis的session赋值给User,调用该user的方法测试即可

public class test {
public static void main(String[] args) throws IOException {
SqlSession sqlSession= MyBatis.getSqlSession();
//selectOne的第一个参数:mapper文件里namespace+select语句的id
//第二个参数就是语句内的参数值
User user=sqlSession.selectOne("com.lxy.entity.UserMapper.selectUser",1);
System.out.println(user.getId()+","+user.getName()+","+user.getPwd());
}
}

数据库持久化框架——MyBatis(1)的更多相关文章

  1. android数据库持久化框架

    android数据库持久化框架

  2. android数据库持久化框架, ormlite框架,

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  3. Java EE数据持久化框架mybatis练习——获取id值为1的角色信息。

    实现要求: 获取id值为1的角色信息. 实现思路: 创建角色表sys_role所对应的实体类sysRole. package entity; public class SysRole { privat ...

  4. 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org

    https://github.com/makersoft/mybatis-shards MyBatis-Shards 专业的MyBatis数据库切分框架 MyBatis Shards简介 MyBati ...

  5. Spring学习之旅(十二)--持久化框架

    对于本职工作来说 JDBC 就可以很好的完成,但是当我们对持久化的需求变得更复杂时,如: 延迟加载 预先抓取 级联 JDBC 就不能满足了,我们需要使用 ORM框架 来实现这些需求. Spring 对 ...

  6. SpringBoot之持久化框架

    在之前的 Spring学习之旅(十二)--持久化框架 中我们介绍了 JPA 的使用,今天我们就来了解下另一种持久化框架 Mybatis. 一.集成 Mybatis 1.1 准备工作 新建用户表 CRE ...

  7. 【持久化框架】Mybatis与Hibernate的详细对比

        前言 这篇博文我们重点分析一下Mybatis与hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Myba ...

  8. 【持久化框架】Mybatis与Hibernate的详细对比(转发)

    前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Mybatis简 ...

  9. 浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程

    前言 最近开始了SpringBoot相关知识的学习,作为为目前比较流行.用的比较广的Spring框架,是每一个Java学习者及从业者都会接触到一个知识点.作为Spring框架项目,肯定少不了与数据库持 ...

随机推荐

  1. 在docker上部署centos

    1.查找镜像源$ docker search centosNAME DESCRIPTION STARS OFFICIALcentos The official build of CentOS. 385 ...

  2. 在cc.EventListener.TOUCH_ONE_BY_ONE事件中判断拖动物离哪边近飞向那边

    需将拖动物坐标和要飞向物坐标转化为整个layer的坐标,因为人们判断远近是根据整个layer来看的.

  3. NMF: non-negative matrix factorization.

    1. 矩阵分解可以用来解决什么方法, 以及how? 利用矩阵分解来解决实际问题的分析方法很多,如PCA(主成分分析).ICA(独立成分分析).SVD(奇异值分解).VQ(矢量量化)等.在所有这些方法中 ...

  4. 【Python requests多页面爬取案例】

    "```python import requests from fake_useragent import UserAgent # 随机ua库 class Boring(): def __i ...

  5. SSH后台分页

    初学SSH,开始用的Struts2+Hibernate3+Spring3,Hibernate中用的HibernateTemplate进行数据库的操作.之后在进行前台页面显示的时候,要用到分页,查了一下 ...

  6. C++-POJ2155-Matrix[数据结构][树状数组]

    二维树状数组+叉分 区间修改转化为单点修改 单点查询本来就可视为区间查询 于是本题可解 PS:不知道为什么函数传参数,传的是变量就会出现奇奇怪怪的问题? 所以读入单独写了,还有就是循环的初始化硬是多定 ...

  7. xpath解析html标签

    最近忙一个需求:把一个字符串形式的html文档转化成excel. 分解需求: ① 实现语言 ———— python ② html解析 ———— 用 lxml库的etree工具,xpath方式解析文档树 ...

  8. 并发之atomic原子操作

    Atomic类 Atomic类是一个简单的高效的.线程安全的递增递减方案,在多线程或者并发环境中,我们常常会遇到这种情况 int i=0; i++ 稍有经验的同学都知道这种写法是线程不安全的.为了达到 ...

  9. MySQL学习(十一)double write 介绍 (半原创)

    复习 Innodb关键的特性 插入缓存 两次写 异步IO 刷新邻近页 自适应哈希索引 概述 double write 的主要的作用是保证写入数据库文件的可靠性.通俗地说就是一份数据写两个地方,当出现异 ...

  10. Docker - 构建一个简单的应用镜像

    概述 做个简单的可用镜像 背景 之前的镜像, 都是 命令教程 类的 这次我想构建一个 可以用的 简单镜像镜像 1. 环境 os centos7 docker 18.09 docker image ja ...