一.导入jar包

        <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.9-rc</version>
</dependency>

  创建entity类的过程省略

二.配置myBatis的配置文件

1.首先创建jdbc.properties配置文件,将数据库连接信息写入

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/jydb?serverTimezone=UTC&useSSL=false
jdbc.username=root
jdbc.password=root

  

2.配置myBatis的配置文件,myBatis-config.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>
<!-- 引入jdbc.properties -->
<properties resource="jdbc.properties">
</properties> <!-- 可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境
一、development:开发模式
二、work:工作模式-->
<environments default="development"> <!--id属性必须和上面的default一样 -->
<environment id="development">
<!-- 使用JDBC事务管理器 -->
<transactionManager type="JDBC"/>
<!--dataSource 数据源 -->
       <!-- 使用${}把jdbc.properties中的变量引入 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments> <!-- mappers标签用于配置myBatis的映射文件
*java类用class属性
*XML文件用source属性
这里配置了两个映射文件,下边会说明
-->
<mappers>
<mapper class="com.jy.mapper.UserMapper"/>
<mapper resource="mapper/noticeMapper.xml"/>
</mappers>
</configuration>

  这里配置的两个mapper映射文件

    UserMapper是一个java接口,用于使用注解的方式操作数据库

    noticeMapper.xml就是普通的映射文件,是使用xml的方式来操作数据库

至此,项目结构如下

PS: 由于idea默认不识别resources以外目录下的xml文件,所以这里把noticeMapper.xml放在了resources目录下

三.使用注解的方式

public interface UserMapper {
// 当只传入1个参数时,#{}内可以填任意内容,表示占位符,如果有多个参数,则必须填参数名
@Select("SELECT * FROM user WHERE id = #{value}")
User queryById(Integer id);
}

  

四.使用XML的方式

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace是命名空间,不是文件的路径,这里自己随便写一个 -->
<mapper namespace="com.jy.noticeMapper" >
<select id="queryById" resultType="com.jy.pojo.Notice" parameterType="int">
SELECT
*
FROM
notice
WHERE
id = #{value}
</select>
</mapper>

  

五.使用Junit4分别测试两种方法

首先是@before和@after的方法

public class MyTest {

    SqlSession session =null;

    @Before
public void init(){
//定义mybatis全局配置文件
String resource = "mybatis-config.xml";
//加载 mybatis 全局配置文件
InputStream inputStream = MyTest.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//根据 sqlSessionFactory 产生 session
session = sessionFactory.openSession();
} @After
public void afterRun() {
session.commit();
session.close();
}
}

 

1.测试注解的方式

    @Test
public void userTest() {
//根据session获取 UserMapper接口
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.queryById(2);
System.out.println(user);
}

 运行结果如下

 

2.使用xml的方式

    @Test
public void noticeTest() {
String statement = "com.jy.noticeMapper.queryById";
// 使用sqlSession的方法,传入命名空间.sql语句id的字符串和查询条件来查询数据
Object o = session.selectOne(statement, 1);
System.out.println(o); }

  运行结果如下

六.总结思路

  1.导入jar包,编写myBatis配置文件

  2.编写mapper文件,注解的方式用接口,xml的方式用xml文件.

  3.在配置文件的<mappers>标签中注册mapper文件

  3.通过SqlSession来执行映射文件中的SQL语句

注解方式和xml方式的区别:

  1.文件类型的区别

    注解方式使用: java接口

    xml方式使用:   xml文件

  2.在<mappers>标签内注册映射文件时

    注解方式:  是java类,使用class属性,用英文句号分隔 com.jy.mapper.UserMapper

    xml方式:    是xml文件,使用resource属性,用斜杠分隔 mapper/noticeMapper.xml

  3.使用时的区别

    注解方式:  使用Sqlsession的getMapper()方法,获取该Mapper接口的对象,用返回的对象直接调用方法即可

    xml方式:    使用Sqlsession的增删改查方法(比如selectOne()), 传入 "命名空间.sql文id" 和检索条件.

  4.获取sql文的方式

    注解方式:  直接调用方法即可,从方法上的注解获取sql文

    xml方式:    使用 " 命名空间.ip " 获取sql文.

在Mappers标签中注册映射文件是什么作用?

注册XML格式的mapper文件

  通过命名空间和sql的id来解析xml文件,这样就可以在使用SqlSession的CRUD方法时,通过" 命名空间.ip "获取SQL文来执行.

f

MyBatis-使用XML或注解的简单实例的更多相关文章

  1. mybatis 同时使用 XML 和注解

    引言 学过 MyBatis 框架的童靴都知道, MyBatis 支持 XML 和注解两种方式配置,如下: 使用 XML 方式配置 只写明 XML 的 resource 路径(或者URL路径) < ...

  2. mybatis学习一:基于xml与注解配置入门实例与问题

    注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...

  3. Mybatis之XML、注解

    前言 上篇简单介绍了Mybatis的简单实用,本篇先对上次实验环境的一些内容进行优化,然后验证Mybatis的XML配置以及注解方式. 实验环境优化 数据库配置 在mybatis的配置文件中,引入数据 ...

  4. 关于spring的IOC和DI的xml以及注解的简单介绍

    xml 一 目的:通过ApplicationContext对象的getBean方法获取所需类的对象. 编写一个service类 public class service { private Strin ...

  5. MyBatis中XML 映射配置文件的简单介绍

    官网写的比较具体,可以查看以下的网站: http://www.mybatis.org/mybatis-3/zh/configuration.html 另外,实际用到标准的CRUD的操作和查询列表, & ...

  6. XML节点自动生成简单实例

    有些时候我们在拼装XML的过程中,因为各种拼接会感到非常的麻烦(定义变量模型,自动生成,使用XElement再去组装),我的脑袋感觉都大了,能不能有个稍微比较快捷自动随变量自动生成XML格式的方式,看 ...

  7. MyBatis 使用简单的 XML或注解用于配置和原始映射

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .My ...

  8. mybatis 详解(三)------入门实例(基于注解)

    1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...

  9. SpringMVC笔记——Spring+MyBatis组合开发简单实例

    简介 SSH框架很强大,适合大型项目开发.但学无止境,多学会一门框架组合开发会让自己增值许多. SSM框架小巧精致,适合中小型项目快速开发,对于新手来说也是简单上手的.在SSM框架搭建之前,我们先学习 ...

随机推荐

  1. Vue. 之 Element table 高度自适应

    Vue. 之 Element table 高度自适应 使用vue创建table后,其高度自适应浏览器高度. 在创建的 el-table 中添加:height属性,其值为一个变量(tableHeight ...

  2. POJ 2031 Building a Space Station (prim裸题)

    Description You are a member of the space station engineering team, and are assigned a task in the c ...

  3. 基于pytest的接口测试

    最近要开展接口测试,起初打算使用公司已有的Fitnesse测试工具来进行接口测试.过程中发现,构造接口字段数据.测试数据都比较困难,接口参数多的时候,用例量就会很多,关键执行速度还慢.所以放弃了. 找 ...

  4. 优化 Tengine HTTPS 握手时间

    背景 网络延迟是网络上的主要性能瓶颈之一.在最坏的情况下,客户端打开一个链接需要DNS查询(1个 RTT),TCP握手(1个 RTT),TLS 握手(2个RTT),以及最后的 HTTP 请求和响应,可 ...

  5. 精密MRAM芯片制造系统

    MRAM是一种非常复杂的薄膜多层堆叠,由10多种不同材料和超过30层以上的薄膜与堆叠组成,部分薄膜层的厚度仅达数埃,比人类的发丝还要薄500000倍,相近于一颗原子的大小,如何控制这些薄膜层的厚度.沉 ...

  6. fc_net.py cs231n

    n如果有错误,欢迎指出,不胜感激 import numpy as np from cs231n.layers import * from cs231n.layer_utils import * cla ...

  7. Chrome浏览器一直请求clients1.google.com:443

    浏览器莫名其妙地发一大堆请求,往clients1.google.com:443,把各种扩展各种插件关了都不管用,后来才发现问题,取消“密码和表单”中的“自动填充”功能,即可解决.

  8. 50倍时空算力提升,阿里云RDS PostgreSQL GPU版本上线

    2019年3月19日,阿里云RDS PostgreSQL数据库GPU规格版本正式上线,开启了RDS异构计算并行加速之路.该版本在RDS(关系型数据库服务)的云基础设施层面首次完成了与阿里云异构计算产品 ...

  9. 几道莫名AC的并查集题

    那啥那啥 原本今天还是做(看)差分约束的,但是上不去Vjudge我只能来刷并查集了. %%%静萱大佬把那么多年的noip题都刷遍了,我只能刷水题,noip的题实在是太难了不会啊. 第一道:洛谷P202 ...

  10. C语言获当地时间

    代码如下: #include <stdio.h> #include <time.h> #define DEBUGE 1 int main(void) { time_t rawt ...