mybatis入门--初识mybatis
初识mybatis
今天,一起来说说mybits这个框架吧。这是一个持久层的框架。之前叫做ibatis。所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶。不是写错了,它确实就是这个样子的。
mybatis是什么
首先,我们来看看mybatis是个什么东东,它有什么用?我们为什么要学习它。mybatis是一个持久层的框架。所谓的持久层,就是我们三层中的dao层。主要负责跟数据库进行交互。可以建立数据库表和系统中的对象的一对一映射关系。这种框架我们称之为orm框架。但是mybatis框架需要自己写sql语句,且不能像hibernate那样自动生成sql语句,并且建立实体类和数据库的映射。所以我们说它是不完全的orm框架。
有的同学可能对映射这个词有点不太明了。这里举个例子:如果我们在数据库中有一user表,里面的字段有id、name、birthday、sex、address等字段,表中有一条数据,如图所示:
而我们系统中也应该存在一个将这些字段存为属性的类,如图:
我们的这个表中的数据,对应表中的代码的话,应该是一个User的对象。这个对象中的各个属性的值即为表中的那一条数据。而框架通过我们的配置,将这个表中的记录和这个类的对象建立一对一的关系。我们称之为映射。这样的映射建立之后,我们可以通过操作这个对象实现对数据库的修改。这样我们在考虑业务逻辑的时候就可以不再考虑我们的数据库中的表是如何存储的,而是对我们的实体对象进行操作。简化开发。
那么,mybatis这个框架都可以做些什么呢?
这个其实也很简单。无非是对数据库的增删改查。这是每个持久层框架都应该支持的事情。sql语句可以干的事情,mybatis基本上都可以做。
mybatis如何使用
在这里,我们不说那些特别高大上的使用方式,只是简单地实现一个最基础的mybatis框架的搭建以及我们的最基本的根据id查询用户的功能的实现。
第一步:创建java工程
第二步:导入jar包
在Java项目中,要想搭建一个框架,首先需要准备的是mybatis的jar包。而由于我们的mybatis是依赖log4j进行输出的,所以我们还需要log4j的包。这里将博主用到的包进行下截图分享。
第三步:log4j.properties的创建
在classpath下创建log4j.properties用于供log4j调用。其代码可以从网上搜索直接粘贴使用。我的代码如下:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
第四步:sqlMapConfig.xml文件配置
在classpath目录下创建sqlMapConfig.xml文件,sqlMapConfig.xml是mybatis的核心配置文件,现配置其数据源和事物管理。其内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 和spring整合后 environments配置将废除-->
<environmentsdefault="development">
<environmentid="development">
<!-- 使用jdbc事务管理,jdbc的默认事物管理是每条sql分配一个-->
<transactionManagertype="JDBC"/>
<!-- 数据库连接池-->
<dataSourcetype="POOLED">
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
<propertyname="username"value="root"/>
<propertyname="password"value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
第五步:创建po类
pojo包,是我们在开发中的实体类的包,类似于domain包。这里我们创建的是user类,代码如下:
package cn.itcast.pojo; import java.util.Date; public class User {
private int id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址 public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex
+ ", birthday=" + birthday + ", address=" + address + "]";
} }
第六步:sql映射文件创建
在classpath下的sqlmap(该目录可以任意,不过建议单独为配置文件建立一个文件夹,以便于管理)目录下创建一个user.xml的文件代码如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间: 稍后讲解 -->
<mappernamespace="test"> </mapper>
第七步:加载映射文件
将sql映射文件添加到我们的mybatis的核心配置文件中,使我们的mybatis在运行的时可以识别映射文件。代码如下:
<mappers>
<mapperresource="sqlmap/User.xml"/>
</mappers>
到这里,我们的框架搭建就完成了,下面,我们将进行第一个小功能的实现。
1.在我们的user.xml中添加我们的select语句。代码如下:
<mapper namespace="test"> <!-- id:sql语句的唯一标识, 要求在同一个映射文件中id不能重复
parameterType:传入参数类型
resultType:返回结果集类型 #{}占位符: 占位符起到占位的作用, 如果传入参数是简单类型(String, long, integer, double, boolean等)那么#{}中的变量名称可以随意起名
-->
<select id="findUserById" parameterType="java.lang.Integer" resultType="cn.itcast.pojo.User">
SELECT * FROM user where id=#{id}
</select>
</mapper>
2.测试程序
@Test
public void testFindUserById() throws Exception {
String resource = "SqlMapConfig.xml";
//通过流将核心配置文件读入
InputStream inputStream = Resources.getResourceAsStream(resource);
//通过核心配置文件输入流, 创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂创建会话
SqlSession openSession = factory.openSession(); //第一个参数: 调用的sql语句 namespace+.+sq语句id, 第二个参数:传入sql语句中的参数
User user = openSession.selectOne("test.findUserById", 1); System.out.println(user); }
至此,我们的mybatis入门程序就开发完成了。其中不足之处,欢迎各位大神指导。
mybatis入门--初识mybatis的更多相关文章
- Mybatis入门之MyBatis基础
一.MyBatis概述 1.ORM模型简介 ORM:对象关系映射(Object Relation Mapping) 1)传统JDBC程序的设计缺陷(实际项目不使用) a.大量配置信息硬编码 b.大量的 ...
- mybatis入门(三):mybatis的基础特性
mybatis的知识点: 1.mybatis和hibernate本质区别和应用场景 hibernate:是一个标准的ORM框架(Ojbect relation mapper对象关系映射).入门门槛较高 ...
- Mybatis入门之MyBatis项目案例
一.项目案例演示 后台管理系统用户数据维护平台 所有用户数据查询 单个用户数据查询 用户数据修改(完善资料) 锁定用户账号 删除用户账号 彻底删除用户账号 二.数据库数据准备工作 数据库:mysql ...
- MyBatis入门使用
MyBatis入门使用 MyBatis简介 MyBatis是支持普通SQL查询.存储过程和高级映射的持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBati ...
- mybatis入门案例自定义实现
mybatis入门案例自定义实现 一.需要实现的类和接口 public static void main(String[] args) throws Exception{ //1.读取配置文件 Inp ...
- 初识mybatis之入门案例
我也是自学了一下,在idea中基于maven的mybatis的配置.有什么不对的地方,请指正,谢谢. 1.1咋们先来配置测试一下,配置mybatis的图解: 1.2 pom.xml需要mybatis的 ...
- (整理)MyBatis入门教程(一)
本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...
- MyBatis1:MyBatis入门
MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
随机推荐
- java.io.Closeable 接口
package java.io; import java.io.IOException; /** * 关闭数据资源*/public interface Closeable extends AutoCl ...
- python第三步骤(pygame)
1:先安装homebrew(类似于yum /apt-get为什么需要它呢,因为pip安装的时候需要很多的包的依赖,sdl什么的), 2:pip 安装pygame 我讨厌的环境变量问题 然后 通过的是 ...
- FMS Dev Guide学习笔记
翻译一下其中或许对游戏开发有用的一个章节 一.开发交互式的媒体应用程序 1.共享对象(Shared objects) ----关于共享对象 使用共享对象可以同步用户和存储数据.共享对象 ...
- CDH6离线安装
CentOS7下完全离线安装CDH6集群 CDH Linux 大数据 shareSHARE 245 浏览量 分享到微博 分享到 Twitter 分享到 QQ 本文是在CentOS7.5下进行C ...
- 如何跟踪某个session的SQL
1 oracle自带的sql trace程序可以跟踪本地session sys: alter system set sql_trace = true;对所有会话跟踪 schema: alter ses ...
- yii gii配置ip限制使用gii
<?php $config = [ 'components' => [ 'request' => [ // !!! insert a secret key in the follow ...
- linux内核配置 kbuild
Linux 内核配置机制 http://blog.csdn.net/dianhuiren/article/details/6917132 linux kbuild文档 http://blog.chin ...
- 关于python中的is和==的区别
Python 中的比较:is 与 == 在 Python 中会用到对象之间比较,可以用 ==,也可以用 is .但是它们的区别是什么呢? is 比较的是两个实例对象是不是完全相同,它们是不是同一个 ...
- NPM安装依赖速度慢问题
[NPM安装依赖速度慢问题] npm config set registry http://registry.npm.taobao.org 参考:http://blog.csdn.net/rongbo ...
- Failure [INSTALL_CANCELED_BY_USER]
安装app到真机,遇到 Failure [INSTALL_CANCELED_BY_USER] 错误. 解决方法:将手机的USB安装权限打开即可.设置->更多设置->开发者选项->US ...