数据库持久化框架——MyBatis(1)
叨叨时刻:内容根据阿里云大学的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)的更多相关文章
- android数据库持久化框架
android数据库持久化框架
- android数据库持久化框架, ormlite框架,
前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...
- Java EE数据持久化框架mybatis练习——获取id值为1的角色信息。
实现要求: 获取id值为1的角色信息. 实现思路: 创建角色表sys_role所对应的实体类sysRole. package entity; public class SysRole { privat ...
- 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org
https://github.com/makersoft/mybatis-shards MyBatis-Shards 专业的MyBatis数据库切分框架 MyBatis Shards简介 MyBati ...
- Spring学习之旅(十二)--持久化框架
对于本职工作来说 JDBC 就可以很好的完成,但是当我们对持久化的需求变得更复杂时,如: 延迟加载 预先抓取 级联 JDBC 就不能满足了,我们需要使用 ORM框架 来实现这些需求. Spring 对 ...
- SpringBoot之持久化框架
在之前的 Spring学习之旅(十二)--持久化框架 中我们介绍了 JPA 的使用,今天我们就来了解下另一种持久化框架 Mybatis. 一.集成 Mybatis 1.1 准备工作 新建用户表 CRE ...
- 【持久化框架】Mybatis与Hibernate的详细对比
前言 这篇博文我们重点分析一下Mybatis与hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Myba ...
- 【持久化框架】Mybatis与Hibernate的详细对比(转发)
前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Mybatis简 ...
- 浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程
前言 最近开始了SpringBoot相关知识的学习,作为为目前比较流行.用的比较广的Spring框架,是每一个Java学习者及从业者都会接触到一个知识点.作为Spring框架项目,肯定少不了与数据库持 ...
随机推荐
- cpu几核
import psutil def GetCpuInfo(): cpu_count = psutil.cpu_count(logical=False) #1代表单核CPU,2代表双核CPU xc_co ...
- Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
原因是没有开启php的php_fileinfo扩展,开启即可. 找到php.ini文件,搜索到php_fileinfo,去掉前面的分号,然后重启服务器apache.nginx下同理. extensio ...
- path is not a working copy directory
svn: 'G:\chengXu\2017_Year\JFW\Easy7\WebRoot' is not a working copy directory 解决方法: (1)原因:eclipse把sr ...
- 神舟战神笔记本使用U盘重装系统
今天我的神舟战神笔记本电脑系统故障了,在这里记录一下使用U盘重装系统的方法: 1.插入装机U盘. 2.按开机键,然后马上按Esc键. 3.选择Boot Manager进入. 4.选择EFI USB D ...
- Python爬虫之post请求
暑假放假在家没什么事情做,所以在学习了爬虫,在这个博客园里整理记录一些学习的笔记. 构建表单数据(以http://www.iqianyue.com/mypost 这个简单的网页为例) 查看源代码,发现 ...
- javascript当中Function用法
4)Function用法 例 3.4.1 <head> <meta http-equiv="content-type" content="text ...
- 图解SOAPUI解析WSDL文件
本文链接:https://blog.csdn.net/qq_16234613/article/details/53143279 新建项目 添加WSDL文件 查看方法 查看XML格式 运行测试
- 「题解」「CF1019B」The hat
目录 题目 背景 程序输出 交互程序输入 题解 程序 题目 背景 这是一道交互题. 一共有 \(n\) 个人做成一圈,他们的编号从 \(1\) 到 \(n\). 现在每个人的手里面都有一个数字 \(a ...
- HTML学习(9)头部
HTML <head> 元素 <head> 元素包含了所有的头部标签元素.在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种met ...
- 95. 不同的二叉搜索树 II、96. 不同的二叉搜索树
95 Tg:递归 这题不能算DP吧,就是递归 一个问题:每次的树都要新建,不能共用一个根节点,否则下次遍历对根左右子树的改动会把已经放进结果数组中的树改掉.. class Solution: def ...