ibatis简单实现与配置

ibatis(现在名为MyBatis)是一种简单、易用、易学的持久化框架,可以用于Java语言编写的应用程序中。它广泛应用于企业级Java应用程序的数据访问层中,以提供一种简单的方式来访问和操作关系型数据库的数据。下面就让我来详细讲解ibatis的简单实现与配置的攻略。

1. 简单实现

ibatis的简单实现需要添加ibatis-core,jdom和ibatis-sqlmap组件的依赖,配置SqlMapConfig.xml文件,添加映射文件的配置。下面是详细步骤:

  1. 添加依赖

在pom.xml文件中添加以下依赖:

<dependency>
      <groupId>com.ibatis</groupId>
      <artifactId>ibatis-core</artifactId>
      <version>3.0</version>
    </dependency>

<dependency>
      <groupId>jdom</groupId>
      <artifactId>jdom</artifactId>
      <version>1.1.3</version>
    </dependency>

<dependency>
      <groupId>com.ibatis</groupId>
      <artifactId>ibatis-sqlmap</artifactId>
      <version>2.3.4.726</version>
    </dependency>
  1. 配置SqlMapConfig.xml文件

在resources目录下建立SqlMapConfig.xml文件,并添加以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
        <settings useStatementNamespaces="true"/>
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
        </dataSource>
<!--添加mapper配置文件-->     
<mappers>
                <mapper resource="com/xxx/userMapper.xml"/>
        </mappers>
</sqlMapConfig>

该文件主要包含了数据源的配置和添加Mapper配置文件。

  1. 添加Mapper配置文件

在自定义的包com.xxx下建立UserMapper.xml文件,并添加以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="UserMapper">
    <select id="getUserById" parameterClass="java.lang.Integer" resultClass="java.lang.Object">
        select * from user where id = #value#
    </select>
</sqlMap>

这里只是简单的实现了查询单个用户的功能。此处select语句中含有一个#value#的占位符,这个占位符的值将由Java代码给出。

  1. 编写Java代码

接下来编写Java代码,定义一个getUserById的方法,在方法中调用ibatis进行查询。代码如下:

public User getUserById(int id) {
    SqlMapClient sqlMapClient = null;
    User user = null;
    try {
        Reader reader = Resources.getResourceAsReader("com/xxx/SqlMapConfig.xml");
        sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
        user = (User) sqlMapClient.queryForObject("UserMapper.getUserById", id);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (sqlMapClient != null) {
                sqlMapClient.endTransaction();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return user;
}

该方法首先读取SqlMapConfig.xml文件,通过SqlMapClientBuilder构建SqlMapClient对象,然后使用SqlMapClient对象进行查询。这里的参数UserMapper.getUserById表示id为1(参数id)的用户信息将会从UserMapper.xml文件中读取。

2. 示例一:用户注册

下面以用户注册场景为例,讲述ibatis的配置和使用。

  1. 配置SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
        <settings useStatementNamespaces="true"/>
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
        </dataSource>
        <mappers>
                <mapper resource="com/xxx/userMapper.xml"/>
        </mappers>
</sqlMapConfig>
  1. 编写UserMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="UserMapper">
    <insert id="insertUser" parameterClass="com.xxx.User">
        insert into user (username, password, email) values (#username#, #password#, #email#)
        <selectKey resultClass="java.lang.Integer" keyProperty="id">
            select last_insert_id()
        </selectKey>
    </insert>
</sqlMap>
  1. 编写Java代码
public void insertUser(User user) {
    SqlMapClient sqlMapClient = null;
    try {
        Reader reader = Resources.getResourceAsReader("com/xxx/SqlMapConfig.xml");
        sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
        sqlMapClient.insert("UserMapper.insertUser", user);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (sqlMapClient != null) {
                sqlMapClient.endTransaction();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

该方法首先从SqlMapConfig.xml文件中读取数据库的配置信息,然后通过SqlMapClientBuilder创建SqlMapClient对象,并使用SqlMapClient对象插入用户信息。其中UserMapper.insertUser表示将用户信息插入到UserMapper.xml文件中的insertUser操作。

3. 示例二:管理员登录

下面以管理员登录场景为例,讲述ibatis的配置和使用。

  1. 配置SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
        <settings useStatementNamespaces="true"/>
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
        </dataSource>
        <mappers>
                <mapper resource="com/xxx/adminMapper.xml"/>
        </mappers>
</sqlMapConfig>
  1. 编写AdminMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="AdminMapper">
    <select id="getAdminByUsernameAndPassword" parameterClass="com.xxx.Admin" resultClass="com.xxx.Admin">
        select * from admin where username = #username# and password = #password#
    </select>
</sqlMap>
  1. 编写Java代码
public Admin getAdminByUsernameAndPassword(String username, String password) {
    SqlMapClient sqlMapClient = null;
    Admin admin = null;
    try {
        Reader reader = Resources.getResourceAsReader("com/xxx/SqlMapConfig.xml");
        sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
        Admin param = new Admin();
        param.setUsername(username);
        param.setPassword(password);
        admin = (Admin) sqlMapClient.queryForObject("AdminMapper.getAdminByUsernameAndPassword", param);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (sqlMapClient != null) {
                sqlMapClient.endTransaction();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return admin;
}

该方法用于管理员登录,首先从SqlMapConfig.xml文件中读取数据库的配置信息,然后通过SqlMapClientBuilder创建SqlMapClient对象,并使用SqlMapClient对象查询管理员信息。其中AdminMapper.getAdminByUsernameAndPassword表示查询AdminMapper.xml文件中的getAdminByUsernameAndPassword操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ibatis简单实现与配置 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 一文吃透Spring集成MyBatis

    一文吃透Spring集成MyBatis的完整攻略 前言 Spring和MyBatis是JavaWeb开发中非常常用的两个框架,各自拥有自己的优势。而将它们集成使用则可以发挥它们的优势,更加便捷地进行开发。本文将分步骤介绍如何集成Spring和MyBatis。 环境准备 JDK 1.8 或以上版本 Maven 3.x 或以上版本 Spring 5.x 或以上版…

    Java 2023年5月31日
    00
  • 详解java调用python的几种用法(看这篇就够了)

    下面是详解java调用python的几种用法的完整攻略。 1. 使用ProcessBuilder调用python ProcessBuilder可以通过指定命令行的方式启动子进程。因此使用ProcessBuilder可以很方便地调用python脚本,下面是示例代码: import java.io.*; public class CallPythonProces…

    Java 2023年5月23日
    00
  • SpringBoot统一返回JSON格式实现方法详解

    根据你给出的主题,我将为你提供一个完整的 Spring Boot 统一返回 JSON 格式的实现方法攻略。 什么是 Spring Boot 统一返回 JSON 格式 Spring Boot 是一种基于 Spring 框架的轻量级应用程序开发框架,它可以非常快速地构建 Web 应用程序和 RESTful 服务。随着 RESTful 服务的流行,Spring B…

    Java 2023年5月20日
    00
  • response.sendRedirect()实现重定向(页面跳转)

    首先,我会给出response.sendRedirect()方法的基础知识介绍。然后会详细讲解这个方法的实现流程和使用场景,最后会给出两个示例说明。 response.sendRedirect()方法 response.sendRedirect()方法是Java Servlet API的一部分,它实现了在服务器端的页面跳转,也叫做重定向。这个方法以url为参…

    Java 2023年6月16日
    00
  • Java如何判断整数溢出,溢出后怎么得到提示

    Java中整数类型(int, long等)变量的范围是有限的,当一个变量的数值超出了它的范围时,就会发生整数溢出。溢出的结果与数值运算的结果不同,可能导致程序运行异常,所以我们需要在程序中判断整数是否溢出,并得到提示以确保程序的正确性。 判断整数溢出的方法是通过与最值的比较来实现的。以int类型的整数为例,最大值为2^31-1(即2147483647),最小…

    Java 2023年5月25日
    00
  • Java定时器Timer的源码分析

    下面是“Java定时器Timer的源码分析”的完整攻略。 一、概述 java.util.Timer 是一个简单的线程定时器,它允许您在未来一个指定的时间段内执行单个或重复的任务。 Timer 的 API 相对简单,但是它是在单线程中运行的。因此,如果一个任务的执行时间很长,那么以后所有任务的执行都将受到影响。 Timer 类仅仅用于在一个线程中顺序执行执行 …

    Java 2023年5月20日
    00
  • MyBatis插件机制超详细讲解

    MyBatis插件机制超详细讲解 什么是MyBatis插件机制 MyBatis插件机制指的是MyBatis框架提供了一种扩展机制,可以在执行SQL语句的各个环节进行拦截,并在拦截到这些环节时进行自定义的操作,以实现更自定义的功能,例如SQL日志拦截、自定义SQL追踪、自定义SQL执行等。 插件机制最主要的功能是拦截方法并执行自定义操作。 MyBatis插件机…

    Java 2023年5月19日
    00
  • 深入理解约瑟夫环的数学优化方法

    深入理解约瑟夫环的数学优化方法 什么是约瑟夫环问题 约瑟夫环问题是一个数学问题,由公元一世纪末的犹太历史学家弗拉维奥·约瑟夫(Flavius Josephus)所提出,其描述如下: N个人排成一圈,从第1个人开始报数,报到M的人出圈,剩下的人再从1开始报数,报到M的人又出圈……直到剩下最后一个人。 问题的解法 穷举法 穷举法是一种暴力破解的方法,遍历…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部