MyBatis-使用XML或注解的简单实例

摘要:
1、 导入jar包<4.11<版本>服务器时区=UTC&配置>environmentid=“开发”>&书信电报;映射器/>mapperresource=“mapper/noticeMapper.xml”/>&lt!</配置>

一.导入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 /> <mapper resource="mapper/noticeMapper.xml"/> </mappers> </configuration>

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

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

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

至此,项目结构如下

MyBatis-使用XML或注解的简单实例第1张

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   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);
    }

 运行结果如下

 MyBatis-使用XML或注解的简单实例第2张

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);

    }

  运行结果如下

MyBatis-使用XML或注解的简单实例第3张

六.总结思路

  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或注解的简单实例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VictoriaMetrics:使用vmctl来实现vmstorage向victoriametricsprod(单机版)迁移数据python+selenium自动化的准备 1:安装浏览器(火狐)及浏览器插件firebug与firepath、selenium IDE下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android中的文件操作详解以及内部存储和外部存储(转载)

原文链接:http://m.blog.csdn.net/article/details?id=17725989 摘要 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理。根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概...

shell脚本(一)

                                                                                                          shell脚本 定义:脚本就是一条条命令的堆积。常见脚本有:js asp,jsp,php,python Shell特点:简单易用高效Shell分类...

APK Crack

写这篇文章之前,有些犹豫,我会不会因此而打开了一个潘多拉魔盒呢?后来一想,Android类似的恶意软件早已问世,说明这世上已经有不少软件安全专家或者黑客们对此并不陌生了。而我,仅仅是作为一个传道者,将这个少数人知道的秘密告诉大家。于是我心安多了,我想我是在为Android软件安全行业早日成熟起来做贡献吧~! 所谓APK指的是Android操作系统的应用程序...

vue 路由更新页面视图未更新问题

最近项目做面包屑的时候遇到一个问题就是路由变化的时候页面视图并没有发生变化,后来上网查,发现是vue-router的特性导致的。 vue-router的切换不同于传统的页面的切换。路由之间的切换,其实就是组件之间的切换,不是真正的页面切换。这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新,也就是我们口中的页面无法更新的问题了。 而我正是因为...

实现Windows和Linux之间的文件共享

一、windows 向linux共享文件(这里都是以win10和ubuntu为例) 首先,打开网络共享中心。如图1 图1 打开更改高级共享设置(图2) 图 2 选择启用网络发现以及启用文件和打印机共享,然后点击保存更改。 接着,选择你要共享的文件夹,右键选择属性,然后选择共享,选择高级共享,选择权限,分别如图3,图4,图5所示: 图 3 图 4...

Docker容器日志查看与清理(亲测有效)

 https://blog.csdn.net/yjk13703623757/article/details/80283729 1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。  2. 解决方法 2.1 找出Docker容器日志 在...