初识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. svn的上传冲突问题

    上传报错实际是 1 . 之前上传的代码与现代码不一样 2. 上传的代码中有错误 需要先拉下来,对比删除不要的,再上传 eclipse加入svn :  1.import  ---从svn检出项目---创 ...

  2. 开发一个FTP软件

    一.开发一个多并发的FTP server 需求: .允许同时支持多用户在线 .用户认证 .用户空间配额 .权限限制 .可上传下载.上传下载过程中显示进度条 .用户可远程切换目录.查看服务端文件列表等 ...

  3. HTML css 样式表

    CSS样式表 2.1.样式表的基本概念 2.1.1.样式表分类 1.内联样式表 和html联合显示,控制精确,但是可重用性差,冗余多. 例:<p style="font-size:14 ...

  4. 启动 idea 编译报错 kotlin

    怀疑是插件问题. 重新删除了.  C:\Users\user  里面inteliJIdea2018.3 缓存 ,解决

  5. Real Time Rendering 1

    [Real Time Rendering 1] 1.RTR是一本导论.官网:http://www.realtimerendering.com. 2.At around 6 fps, a sense o ...

  6. Mesh.CombineMeshes

    [Mesh.CombineMeshes] public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes = true ...

  7. U3D框架—单例框架

    写程序应遵循的原则:高内聚(内容的聚合),低耦合(功能与功能之间的联系) 代码里尽量不要有冗余:既重复,没有用的代码 using System.Collections; using System.Co ...

  8. Failed to acquire connection "SAP_PRD_NEW.SAPSR3". Connection may not be configured correctly or you may not have the right permissions

    SQLSERVER JOB无法执行 错误提示: Message Executed as user: WORKGROUP\NSDZHSCMFP01$. Microsoft (R) SQL Server ...

  9. linux shell 学习笔记01

    1.命令历史记录history !$     :调用上一条命令的执行结果 !100   :运行history记录里的第100条命令 !ser   :调用以ser开头的最后一次执行的命令 ctrl+r  ...

  10. 修改nginx日志格式为json

    Nginx 日志默认为普通文本的格式 /Oct/::: +] "https://boss.zbt.com/finance/partner/create-account-gateway?id= ...