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日

相关文章

  • mybatis学习笔记之mybatis注解配置详解

    MyBatis学习笔记之MyBatis注解配置详解 MyBatis是一款流行的持久层框架,在Spring框架中也广泛被使用。在MyBatis中,我们可以通过注解配置来替代XML配置,可以让配置文件更加简洁,同时便于维护和阅读。 基本注解 MyBatis中最常用的注解是@Select、@Insert、@Update、@Delete和@Mapper。 @Sele…

    Java 2023年6月1日
    00
  • SpringBoot中的Mybatis依赖问题

    一、问题描述 在使用SpringBoot框架时,如果想要使用Mybatis进行数据库访问,通常会在pom.xml文件中添加对应的依赖。然而,有时候在添加依赖后,会遇到依赖冲突、版本不兼容等问题,导致项目无法正常启动或编译。那么,如何解决这些依赖问题呢? 二、解决方法 1.排查依赖冲突 首先,我们需要确定是否是因为依赖冲突导致的问题。我们可以通过查看maven…

    Java 2023年5月20日
    00
  • JDBC连接MySQL并实现模糊查询

    下面是实现JDBC连接MySQL并实现模糊查询的完整攻略以及两条示例。 步骤一:导入MySQL JDBC驱动包 在使用Java连接MySQL之前,我们需要先将MySQL JDBC驱动包导入到项目中。 推荐使用官方提供的驱动包,下载地址:https://dev.mysql.com/downloads/connector/j/ 下载完成后,将驱动包添加到项目的c…

    Java 2023年5月20日
    00
  • SQL 手工注射原理小结

    SQL 手工注射原理小结 SQL注入是一种常见的网络攻击手段之一,它可以通过直接向Web应用程序的数据库服务器发送恶意代码来获取数据库的非法访问权。针对SQL注入攻击中的手工注射原理总结如下: 1. SQL注入的原理 SQL注入是一种基于Web应用程序的安全漏洞,攻击者使用恶意字符序列,在Web应用程序的输入方面插入恶意代码,并使应用程序将恶意代码发送到后端…

    Java 2023年6月15日
    00
  • 浅谈MyBatis执行SQL的两种方式

    来详细讲解一下“浅谈MyBatis执行SQL的两种方式”。 什么是MyBatis? MyBatis是一个将SQL语句与Java对象进行映射的持久层框架,它将SQL语句、结果集映射、参数映射等操作进行了封装,使我们在编写SQL时更加方便灵活。 MyBatis的执行方式可以分为两种:基于XML的Mapper文件和注解。 基于XML的Mapper文件 配置文件 在…

    Java 2023年5月19日
    00
  • Java中的异常处理如何提高程序安全性?

    Java中的异常处理机制是提高程序安全性和稳定性的重要手段之一。它可以让我们在程序运行时捕获和处理可能发生的异常情况,以避免程序的崩溃或者无效输出。 以下是使用Java中的异常处理机制来提高程序安全性的一些攻略: 异常分类 在Java中异常是分为可检查异常和非可检查异常两种: 可检查异常(checked exception):指在编译阶段就可以预测并处理的异…

    Java 2023年4月27日
    00
  • js实现窗口全屏示例详解

    首先,实现网页全屏有两种方式:一种是使用原生JavaScript,另一种是使用第三方库。 使用原生JavaScript实现窗口全屏 function fullscreen() { var elem = document.documentElement; if (elem.requestFullscreen) { elem.requestFullscreen(…

    Java 2023年5月23日
    00
  • java在运行时能修改工作目录吗

    Java程序在运行时可以修改工作目录,可通过以下方式实现: 使用Java的File类修改工作目录 Java提供了File类来操作文件与目录,通过File类提供的方法可以对现有的目录进行修改。 可以通过以下代码来修改工作目录: File dir = new File("D:\\Java_Project"); System.setProper…

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