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日

相关文章

  • java Spring的启动原理详解

    Java Spring是目前最流行的企业级开发框架之一,它帮助开发人员更加高效地进行项目开发和维护。Spring框架的启动过程比较复杂,本文将介绍Java Spring的启动原理详解及其实现过程。 一、 Spring的启动过程 Spring框架的启动过程大体可以归纳为以下几个步骤: 1. 加载配置文件 Spring框架仅在启动时加载配置文件,这些文件包括XM…

    Java 2023年5月19日
    00
  • Spring注解驱动之ApplicationListener异步处理事件说明

    在Spring应用程序中,我们可以使用ApplicationListener接口来处理应用程序事件。在本文中,我们将详细介绍如何使用ApplicationListener异步处理事件,并提供两个示例说明。 1. ApplicationListener接口 ApplicationListener接口是Spring框架中的一个接口,用于处理应用程序事件。当应用程…

    Java 2023年5月18日
    00
  • 一篇看懂Java中的Unsafe类

    我来详细讲解一下“一篇看懂Java中的Unsafe类”的攻略。 引言 Java中有一个名为Unsafe的类,这个类是用于开发JDK本身的工具,提供了一些底层操作。通常情况下,我们不应该使用Unsafe类。但是,如果你了解Unsafe类的使用方式,则会对理解JVM底层原理会有所帮助。接下来,我们来详细讲解它的使用方式。 获取Unsafe类实例 在Java中,我…

    Java 2023年5月20日
    00
  • JAVA实现LRU算法的参考示例

    以下是“JAVA实现LRU算法的参考示例”的完整攻略: 算法简介 LRU(Least Recently Used)算法是一种常用的缓存淘汰算法。它基于一种常见的思路:如果数据最近被访问过,那么将来访问的概率也更高。因此,LRU算法会优先淘汰最近最少使用的数据。LRU算法在缓存应用中有着广泛的应用,如数据库缓存、页面缓存等。 实现思路 在实现LRU算法时,我们…

    Java 2023年5月19日
    00
  • 详细总结IDEA中打jar包的两种方式

    下面我会详细讲解“详细总结IDEA中打jar包的两种方式”的完整攻略。通常情况下,我们需要将我们的Java项目打成可执行的jar包,以便将程序部署在不同的环境中。在IDEA中,有两种常见的方式可以用来打jar包,分别是通过Maven插件打包和通过IDEA的构建工具打包。 通过Maven插件打包 步骤如下: 在pom.xml文件中,添加以下的plugin代码块…

    Java 2023年5月26日
    00
  • Java concurrency之LockSupport_动力节点Java学院整理

    Java concurrency之LockSupport 什么是LockSupport LockSupport是Java并发包中的一个类,用于创建锁和其他同步类的基本构建块,它与已有的同步类不同,其可以阻塞和唤醒线程。LockSupport提供了非常灵活的线程阻塞和唤醒操作,其不会遇到像Object.wait和Thread.join方法那样的一些限制,如同程…

    Java 2023年5月19日
    00
  • java RSAUtils 加密工具类操作

    下面我来详细讲解一下“java RSAUtils 加密工具类操作”的完整攻略。 1. 什么是RSA加密 RSA加密是目前最为常用的非对称加密算法,由Ron Rivest、Adi Shamir 和Leonard Adleman 三人于1977年在MIT公布的,所以以他们三人的名字的头字母命名。 2. RSA加密的原理 RSA加密的原理很简单,就是通过生成一对公…

    Java 2023年5月20日
    00
  • Spring Security基于json登录实现过程详解

    以下是“Spring Security基于json登录实现过程详解”的完整攻略: 什么是Spring Security? Spring Security是一个基于Spring框架的安全控制框架。它提供了一种在Web请求级别和方法级别上控制访问的方式,并为身份验证、授权和攻击保护提供了大量的支持和扩展。 Spring Security基于json登录实现的过程…

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