初识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的更多相关文章

  1. Mybatis入门之MyBatis基础

    一.MyBatis概述 1.ORM模型简介 ORM:对象关系映射(Object Relation Mapping) 1)传统JDBC程序的设计缺陷(实际项目不使用) a.大量配置信息硬编码 b.大量的 ...

  2. mybatis入门(三):mybatis的基础特性

    mybatis的知识点: 1.mybatis和hibernate本质区别和应用场景 hibernate:是一个标准的ORM框架(Ojbect relation mapper对象关系映射).入门门槛较高 ...

  3. Mybatis入门之MyBatis项目案例

    一.项目案例演示 后台管理系统用户数据维护平台 所有用户数据查询 单个用户数据查询 用户数据修改(完善资料) 锁定用户账号 删除用户账号 彻底删除用户账号 二.数据库数据准备工作 数据库:mysql ...

  4. MyBatis入门使用

    MyBatis入门使用 MyBatis简介 MyBatis是支持普通SQL查询.存储过程和高级映射的持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBati ...

  5. mybatis入门案例自定义实现

    mybatis入门案例自定义实现 一.需要实现的类和接口 public static void main(String[] args) throws Exception{ //1.读取配置文件 Inp ...

  6. 初识mybatis之入门案例

    我也是自学了一下,在idea中基于maven的mybatis的配置.有什么不对的地方,请指正,谢谢. 1.1咋们先来配置测试一下,配置mybatis的图解: 1.2 pom.xml需要mybatis的 ...

  7. (整理)MyBatis入门教程(一)

    本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...

  8. MyBatis1:MyBatis入门

    MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...

  9. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

随机推荐

  1. (转)JPA + SpringData

    jpa + spring data 约定优于配置 convention over configuration http://www.cnblogs.com/crawl/p/7703679.html 原 ...

  2. 创建DLL动态链接库——模块定义法(def)

    DLL模块定义法(Module-Definition File,即DEF):在VS家族IDE中,根据提示新增.def文件,如下: LIBRARY 关键字; mytestDll 库名; DLL_ADD ...

  3. C#整数的三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别

    .int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型): .int.Parse(string sParameter)是个构造函数,参数类型只支持string类型: .Con ...

  4. spring boot 程序打jar包及运行

  5. msf客户端渗透(三):提权、图形化payload

    对普通权限session提权 生成一个木马 开启Apache服务 将木马上传网页 被攻击者从这个网页上获取到这个木马 攻击者开启msf侦听 当被攻击者双击这个木马文件时 攻击者就获取到一个sessio ...

  6. ettercap的使用

    ettercap -i eth0 -T -M arp:remote -q /<网关地址>// /<目标地址>// arp:remote ,表示双向 使用图形化界面 etterc ...

  7. Java基础学习笔记(四)

    21.构造方法(续):分类: 隐式构造方法:如果在一个类中,没有手动编写构造方法,则系统会提供一个默认的无参的构造方法 显式构造方法:如果在一个类中,手动编写构造方法,则系统不会提供默认的无参的构造方 ...

  8. python3替换文件的内容

    目标:替换文件中的字符串内容   方法1:使用fileinput包   import fileinput for line in fileinput.input(“要修改的文件名", inp ...

  9. Aptana在Eclipse的安装

    1.下载 com.aptana.rcp.product-3.4.2.zip文件 https://pan.baidu.com/s/1sl81Vit 2.安装 接着Next.直到成功 3.怎么判定安装成功 ...

  10. zabbix监控指定端口

    生产上经常会监控某些具体端口状态,下面介绍具体步骤: 主机名 ip 操作系统 zabbix版本 zabbix-server 172.27.9.63 Centos7.3.1611 zabbix_serv ...