数据库持久化框架——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框架项目,肯定少不了与数据库持 ...
随机推荐
- 'ssh-keygen' 不是内部或外部命令,也不是可运行的程序
右键我的电脑,点击环境变量,设置系统配置里面的Path 新增一个 D:\ruanjiananzhuangdizhi\Git\usr\bin 路径就可以了
- 3ds Max File Format (Part 5: How it all links together; ReferenceMaker, INode)
At this point, you should start to familiarize yourself a bit with the publicly available 3ds Max AP ...
- 设置一个数量不定item的位置
let dis;//item宽度加item之间gap的宽度item.setPosition((i<arr.length/2?-1:1) * Math.abs(i - arr.length/2 + ...
- [NOI2015] 品酒大会 - 后缀数组,并查集,STL,启发式合并
[NOI2015] 品酒大会 Description 对于每一个 \(i \in [0,n)\) 求有多少对后缀满足 LCP 长度 \(\le i\) ,并求满足条件的两个后缀权值乘积的最大值. So ...
- C#中向ListView控件中添加一行数据
C#中向ListView控件中添加一行数据: ,先声明一个ListViewItem: ListViewItem item = new ListViewItem(); ,添加第一列数据: item.Te ...
- h264 RTP STAP-A单时间聚合包
参考官方文档:http://www.rosoo.net/Files/UpFiles/RsProduct/avtools/2009-4/2009491562537854.txt 聚合包的RTP荷载格式的 ...
- 如何删除github中的repository
打开个人界面->点击进入想删除的repository的界面->拉到最下面的danger zone->delete
- mysql-sql逻辑查询顺序
1.sql逻辑执行顺序(物理执行顺序可能会因索引而不同) SELECT 7 DISTINCT 8 FROM 1 JOIN 2 ON 3 WHERE 4 GROUP BY 5 ...
- Yii2.0 高级版修改默认访问控制器
frontend->config->main-local.php $config = [ 'defaultRoute' => 'index/index',//修改默认访问控制器 'c ...
- 为什么hadoop中用到的序列化不是java的serilaziable接口去序列化而是使用Writable序列化框架
继上一个模块之后,此次分析的内容是来到了Hadoop IO相关的模块了,IO系统的模块可谓是一个比较大的模块,在Hadoop Common中的io,主要包括2个大的子模块构成,1个是以Writable ...