在网上找了一个很不错的Mybatis框架的入门学习,讲解的很详细,非常适合初学者了解
转载自:http://www.blogjava.net/davidjefiny/
最近抽空学习了Mybatis这个框架,在学习的过程中也找了很多的文章,个人感觉官网上的东西太多太杂,不适合许多希望一步步快速上手的朋友们,当然觉得查阅问题的时候可以直接通过官网找还比较快或者是StackOverflow,鉴于此原因把自己想把自己学习过程中的经验留作笔记以供分享参考之用,尽量少绕弯路。因为想直接了解Mybatis的使用方式,而网上有许多学习文章是Mybatis与Spring的结合范例,或者说直接在Web Project项目下创立的范例,感觉对于只是纯粹想了解那个东西怎么使用的朋友应该不需要那么多附加的条件,所以本系列中直接用最简单的Java Project作范例演示。
什么是Mybatis,前身iBatis(个人没用过,所以没什么发言权),引述官网的原意来说,Mybatis是支持普通SQL查询,可以更简单直接的操作SQL,存储过程和高级映射的一种优秀的持久层框架,使用它基本可以消除所有的JDBC大麦和参数的手工设置以及结果集的检索,其实个人使用下来感觉,其实主要工作都是在配置XML或者注解上,然后将接口和Java的POJO(普通Java对象映射成数据库的记录),个人没用过Java的Hb,所以对于两者之间的差异性也没权限发表意见,我相信各个事物的产生总有它自己的目的。
这段时间学习下来,其实对Mybatis来说主要的过程无法是以下几步
1. 从XML配置文件中获取SessionFactory,然后由SessionFactory产生相应的Session。
2. 是用Session对象对业务数据完成相应的CRUD操作(增删改查)和相应的事务控制。
3. 使用完毕后关闭相应的Session,以免过度占用资源
4. 使用配置相应的Mapper xml文件进行业务实体的JavaBean与数据库表之间做相应的Map操作
战前准备:
1. 开发环境Eclipse JavaEE IDE,JDK 1.6,数据库mysql 5.5
2. 下载相应Jar包,以备后用
mybatis-3.2.3.zip解压后拿出mybatis-3.2.3.jar,=>下载地址: http://code.google.com/p/mybatis/ (Mybatis核心包)
mybatis-generator-core-1.3.1.jar=>下载地址: http://code.google.com/p/mybatis/wiki/Generator (Mybatis自动生成配置文件包)
mysql-connector-java-5.1.26-bin.jar=>下载地址:http://dev.mysql.com/downloads/connector/j/ (Mysql 的jdbc驱动包)
接下来大家可以再Eclipse下面建一个名为MybatisDemo的Java Project项目,按照如下图中所示新建相应的包结构和文件夹结构,其中config与mapper分别为文件夹,
包david.mybatis.demo与包david.mybatis.model下分别存放相应的demo运行程序与Javabean对象,lib文件夹下存放刚刚下载的那几个第三方jar包。
建完下面的目录,我们可以添加相应的Jar包,如下图
完成后,执行下面SQL,建立DEMO所需的表结构,分别有3张表,Visitor(访问者表),Website(网站表),Channel(频道表)
--创建Visitor CREATE TABLE Visitor ( Id INT(11) NOT NULL AUTO_INCREMENT, Name VARCHAR(1000) NOT NULL, Email VARCHAR(1000) NOT NULL, Status INT NOT NULL DEFAULT 1, CreateTime DateTime, PRIMARY KEY(Id) ) --创建网站表 CREATE TABLE Website ( Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(1000) NOT NULL, VisitorId INT REFERENCES Visitor(Id), Status INT NOT NULL DEFAULT 1, CreateTime DateTime ) --创建频道表 CREATE TABLE Channel ( Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(1000) NOT NULL, WebsiteId INT REFERENCES Website(Id), Status INT NOT NULL DEFAULT 1, CreateTime DateTime )
所有这些都完成后,我们就要开始动手啦~
就像开头说的,Mybatis的所有配置都源于一份XML配置文件,我们需要在config文件夹下,新建名为mybatis_demo_config.xml的配置文件,这一份东西就是我们后面所需要操作的核心之一。
在配置这个文件千万要注意<configuration>节点内的元素都是有层级顺序的要求的,不能够随意更换次序,否则在加载xml配置文件的时候会出现异常而导致后续操作不成功。
具体的节点说明大家可以查看http://mybatis.github.io/mybatis-3/zh/configuration.html#,这里只说比较常用的节点,typeAliases,environments,mappers。
1. typeAliases => 别名节点,可以通过设置这个节点的属性,这样配置文件中其他需要实体名字的地方都可以使用此别名而不是完全限定名,例如 <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" />
2. environments => 环境节点,配置数据连接相关的信息
3. mappers => 配置SQL映射语句。
最简单的配置如下:
<?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> <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- ?useUnicode=true&characterEncoding=utf8为了支持中文数据的写入 --> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_db?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/VisitorMapper.xml" /> </mappers> </configuration>
在包david.mybatis.demo下面新建一个名为MyBatisUtils类,里面存放获取SqlSession与关闭SqlSession的方法,提炼出来方便多次复用。
package david.mybatis.demo; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import david.mybatis.model.CRUD_Enum; public class MybatisUtils { private static final String CONFIG_PATH = "config/mybatis_demo_config.xml"; /* * 获取数据库访问链接 */ public static SqlSession getSqlSession() { SqlSession session = null; try { InputStream stream = Resources.getResourceAsStream(CONFIG_PATH); //可以根据配置的相应环境读取相应的数据库环境 // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( // stream, "development"); SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(stream); session = factory.openSession(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return session; } /* * 获取数据库访问链接 */ public static void closeSession(SqlSession session) { session.close(); } /* * 返回操作记录消息 */ public static void showMessages(CRUD_Enum type, int count) { switch (type) { case Add: System.out.println("添加了" + count + "条记录。"); break; case Delete: System.out.println("删除了" + count + "条记录。"); break; case Update: System.out.println("更新了" + count + "条记录。"); break; case Query: System.out.println("匹配了" + count + "条记录。"); break; case List: System.out.println("共有" + count + "条记录。"); break; default: break; } } }
在包david.mybatis.model下面新建一个名为Visitor的类,用来作相应的OR Mapping。
package david.mybatis.model; import java.text.SimpleDateFormat; import java.util.Date; public class Visitor { private int id; private String name; private String email; private int status; private Date createTime; public Visitor() { // TODO Auto-generated constructor stub createTime = new Date(); } public Visitor(String name, String email) { this.name = name; this.email = email; this.status = 1; this.createTime = new Date(); } public int getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } public Date getCreateTime() { return createTime; } @Override public String toString() { // TODO Auto-generated method stub return String.format("{Id: %d, Name: %s, CreateTime: %s}", id, name, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime)); } }
在包david.mybatis.demo下面新建一个VisitorMapper.xml,用来映射相应SQL语句。
这里要注意namespace=>david.mybatis.demo.IVisitorOperation一定要与对应这个包下面的实际文件名,IVisitorOperation否则无法成功加载相应的映射文件
<mapper namespace="david.mybatis.demo.IVisitorOperation"> <!-- 此处的resultType就是对应刚刚你在typeAlias节点里面规定的别名 --> <select id="basicQuery" parameterType="int" resultType="Visitor"> select * from visitor where id=#{id} and Status>0 order by Id </select> </mapper>
接下来运行下面的程序
public static void testBasicQuery(int id) { SqlSession session = MybatisUtils.getSqlSession(); try { Visitor visitor = (Visitor) session.selectOne("david.mybatis.demo.IVisitorOperation.basicQuery", id); MybatisUtils.closeSession(session); System.out.println(visitor); } catch (Exception e) { // TODO: handle exception } }
一个最简单的执行结果就出来啦
这算是Mybatis系列的HelloWord,下回会讲述关于使用接口的方式进行相应操作。
相关推荐
运行环境 jdk8+oracle+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis 数据库文件 压缩包内 jar包文件 maven搭建 Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业...
报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,采用redis存储token及权限信息 报表前端采用Bootstrap框架,结合Jquery Ajax,...
毕设项目-基于Spring + SpringMvc + MyBatis搭建的学生信息管理系统源码.zip毕设项目-基于Spring + SpringMvc + MyBatis搭建的学生信息管理系统源码.zip毕设项目-基于Spring + SpringMvc + MyBatis搭建的学生信息...
【标题】:“使用IntelliJ IDEA搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)项目” 【正文】 在Java开发领域,Spring、SpringMVC和MyBatis框架的组合,简称SSM,是构建Web应用程序的常用技术栈。IntelliJ IDEA作为...
Spring Boot是Spring框架的一个简化版本,它提供了开箱即用的特性,使得开发者可以快速搭建并运行Java应用。通过自动配置,Spring Boot可以减少大量的配置工作,使得我们能够更加专注于业务逻辑。在这个项目中,...
系统设计包括前端Vue框架和后端SpringBoot框架的搭建,以及数据库和权限控制模块的设计。前端使用Vue框架进行页面开发,利用Vue Router实现路由管理和权限控制。后端使用SpringBoot框架进行业务逻辑开发,利用Spring...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
SpringBoot简化了Spring应用的初始搭建以及配置过程,它默认包含了许多常用的依赖,如数据源、Tomcat服务器等,使得开发者能快速构建项目。而Mybatis-Plus是Mybatis的增强工具,提供了更简便的CRUD操作和灵活的条件...
本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建
标题中的"全注解 spring boot +spring security + mybatis+druid+thymeleaf+mysql+bootstrap"是一个集成开发环境的配置,涉及到的主要技术有Spring Boot、Spring Security、MyBatis、Druid、Thymeleaf、MySQL以及...
(springboot+redis+mybatis+mybatis-plus+lombok+liquibase+shiro+jwt+swagger) 1.mybatis-plus: 几乎实现涵盖了所有的单表操作和分页操作 2.liquibase: 数据库迁移工具:初始化表和初始化数据,修改表字段和修改...
在本资源包中,"SpringMVC精品资源--Spring+SpringMVC+Mybatis+Maven+Mysql框架搭建与分页实例.zip" 涵盖了五个关键的Java开发技术,它们是Spring、SpringMVC、Mybatis、Maven以及Mysql。这五个组件构成了一个完整的...
Struts2+Spring+MyBatis环境搭建 Struts2、Spring 和 MyBatis 是 Java Web 开发中三个非常重要的框架,分别负责 MVC 模式的Presentation层、Business层和Persistence层。Struts2 负责处理用户的请求和响应,Spring ...
【标题】"SpringMVC精品资源--spring+springmvc+mybatis+shiro+gradle简单集成框架.zip" 涵盖了多个关键的Java Web开发框架和技术,这些技术是现代企业级应用的基础。让我们逐一深入理解它们的核心概念和集成方式。 ...
标题中的"Struts2+Spring3.0+MyBatis3.0平台搭建"涉及到的是一个常见的企业级Java Web开发框架组合。这个平台基于Struts2作为MVC框架,Spring3.0作为核心容器,负责依赖注入(DI)和面向切面编程(AOP),而MyBatis...
《构建基于Spring MVC+MyBatis+EasyUI+UEditor+Shiro的权限管理框架系统》 在现代企业级Web应用开发中,高效、安全、易维护的框架选择至关重要。本项目采用Spring MVC、MyBatis、EasyUI、UEditor以及Shiro这五大...
在本项目"管理系统系列--Spring+Springmvc+mybatis搭建人事管理系统.zip"中,我们将探讨如何使用Spring、SpringMVC和MyBatis这三大核心技术构建一个完整的人事管理信息系统。这三个框架是Java企业级开发中非常流行的...
在本文中,我们将深入探讨如何搭建一个基于Spring4、SpringMVC和Mybatis的项目,以及如何进行测试。这个项目组合通常被称为“SSM”框架,是Java Web开发中的主流选择,提供了强大的依赖注入、MVC架构和持久层管理...