Mybatis学习(1)
发布日期:2025-04-14 07:11:16 浏览次数:11 分类:精选文章

本文共 5660 字,大约阅读时间需要 18 分钟。

MyBatis入门程序详解

一、原生态JDBC程序存在的问题

传统的JDBC程序在处理数据库事务时,需要手动管理连接和事务,这种方式容易出现以下问题:

  • 资源管理不便:需要手动获取和释放数据库连接,容易出现资源泄漏
  • 事务控制复杂:事务管理需要手动开始和 rollback,逻辑较为复杂
  • 代码冗余:需要重复编写连接和事务管理代码,增加开发难度
  • 二、MyBatis框架概述

    MyBatis是一种基于SQL映射的持久化框架,它的核心思想是通过XML或注解文件定义数据库操作,简化了 JDBC程序的开发流程。其主要优势包括:

  • 简化数据库操作:通过配置文件定义SQL语句,减少代码冗余
  • 支持事务管理:通过配置文件定义事务管理策略,简化事务处理
  • 缓存机制:提供多种缓存策略,提升数据库性能
  • 支持多种数据库:兼容多种数据库类型,如MySQL、Oracle等
  • 三、入门程序开发

    本节将通过一个简单的用户信息管理系统,完成以下功能:

  • 根据用户ID查询用户信息
  • 根据用户名模糊查询用户信息
  • 添加用户
  • 根据ID删除用户
  • 根据ID更新用户

  • 1. 环境搭建

    1.1 MyBatis下载与导入

    MyBatis框架可以通过以下方式获取:

    下载完成后,将MyBatis相关JAR包添加到项目中。常用的依赖包包括:

    • mybatis-spring:用于整合MyBatis和Spring
    • mybatis-annotation:用于注解风格开发
    • mybatis-dynamic-sql:用于动态SQL语句

    1.2 工程结构

    项目目录结构应如下:

    项目根目录
    ├── src
    │ ├── main
    │ │ ├── java
    │ │ │ └── com
    │ │ │ └── cy
    │ │ │ └── po
    │ │ │ └── User.java
    │ │ └── resources
    │ │ ├── config
    │ │ │ ├── log4j.properties
    │ │ │ ├── db.properties
    │ │ │ └── SqlMapConfig.xml
    │ │ └── sqlmap
    │ │ └── User.xml
    ├── test
    │ └── java
    │ └── com
    │ └── cy
    │ └── first
    │ └── MybatisFirst.java

    2. 配置文件说明

    2.1 db.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis
    jdbc.username=root
    jdbc.password=root

    2.2 SqlMapConfig.xml


    3. POJO类开发

    package com.cy.po;
    public class User {
    private int id;
    private String username;
    private String sex;
    private Date birthday;
    private String address;
    // setter和getter方法省略...
    }

    4. SQL映射文件

    SELECT LAST_INSERT_ID()
    INSERT INTO user(username, birthday, sex, address) VALUES(#{username}, #{birthday}, #{sex}, #{address})
    DELETE FROM user WHERE id=#{id}
    UPDATE user SET username=#{username}, birthday=#{birthday}, sex=#{sex}, address=#{address} WHERE id=#{id}

    5. 测试代码

    package com.cy.first;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;
    import com.cy.po.User;
    public class MybatisFirst {
    @Test
    public void findUserByIdTest() throws IOException {
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    User user = sqlSession.selectOne("test.findUserById", 1);
    System.out.println(user);
    sqlSession.close();
    }
    @Test
    public void findUserByNameTest() throws IOException {
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    List
    userList = sqlSession.selectList("test.findUserByName", "小明");
    System.out.println(userList);
    sqlSession.close();
    }
    @Test
    public void insertUserTest() throws IOException {
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    User user = new User();
    user.setUsername("王小军");
    user.setBirthday(new Date());
    user.setSex("1");
    user.setAddress("河南郑州");
    sqlSession.insert("test.insertUser", user);
    sqlSession.commit();
    System.out.println("用户ID: " + user.getId());
    sqlSession.close();
    }
    @Test
    public void deleteUserTest() throws IOException {
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    sqlSession.delete("test.deleteUser", 29);
    sqlSession.commit();
    sqlSession.close();
    }
    @Test
    public void updateUserTest() throws IOException {
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    User user = new User();
    user.setId(28);
    user.setUsername("王大军");
    user.setBirthday(new Date());
    user.setSex("2");
    user.setAddress("河南郑州");
    sqlSession.update("test.updateUser", user);
    sqlSession.commit();
    sqlSession.close();
    }
    }

    6. 注意事项

  • SQL语句格式:在MyBatis的映射文件中,INSERTSELECT等语句不需要分号结尾
  • 事务管理:默认使用 JDBC 事务管理,开发者无需手动管理事务
  • 缓存机制:可以通过配置文件设置缓存策略,提升数据库性能
  • 通过以上步骤,可以完成一个基本的MyBatis入门程序开发,熟悉其框架特点和使用方法后,可以进一步探索更复杂的功能,如缓存、动态SQL、事务管理等。

    上一篇:MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
    下一篇:MyBatis实操第一课5月17号.在学完了MaBatis框架后。

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年05月24日 04时35分08秒