当前位置: 首页 > article >正文

MyBatis框架的入门

目录

  • MyBatis
    • 第一章:框架的概述
      • 1. MyBatis框架的概述
    • 第二章:MyBatis的入门程序
      • 1. 创建数据库和表结构
      • 2. MyBatis的入门步骤

MyBatis

第一章:框架的概述

1. MyBatis框架的概述

  1. MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。
  2. MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。
  3. 采用了ORM的思想。

第二章:MyBatis的入门程序

1. 创建数据库和表结构

create database mybatis_db;
use mybatis_db;

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` datetime default NULL COMMENT '生日',
  `sex` char(1) default NULL COMMENT '性别',
  `address` varchar(256) default NULL COMMENT '地址',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (1,'老王','2018-02-27 17:47:08','男','北京'),(2,'熊大','2018-03-02 15:09:37','女','上海'),(3,'熊二','2018-03-04 11:34:34','女','深圳'),(4,'光头强','2018-03-04 12:04:06','男','广州');

2. MyBatis的入门步骤

  1. 创建maven的项目,创建Java工程即可。

  2. 引入坐标

    1. 引入MyBatis的3.4.5的版本的坐标

    2. 引入MySQL驱动的jar包,5.1.6版本

    3. 引入Junit单元测试的jar包

    4. 引入log4j的jar包,1.2.12版本(需要引入log4j.properties的配置文件)

          <dependencies>
              <!--mybatis核心包-->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
                  <version>3.4.5</version>
              </dependency>
              <!--mysql驱动包-->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.6</version>
              </dependency>
              <!-- 单元测试 -->
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.10</version>
                  <scope>test</scope>
              </dependency>
              <!-- 日志 -->
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>1.2.17</version>
              </dependency>
          </dependencies>
      
  3. 编写User的实现类,属性尽量使用包装类型,具体的代码如下

    package cn.tx.domain;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     *
     
     *
     
     * 
     */
    public class User implements Serializable{
    
        private static final long serialVersionUID = 525400707336671154L;
        
        private Integer id;
        private String username;
        private Date birthday;
        private String sex;
        private String address;
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", birthday=" + birthday +
                    ", sex='" + sex + '\'' +
                    ", address='" + address + '\'' +
                    '}';
        }
    }
    
  4. 编写UserMapper的接口和方法(就是咱们以前的UserDao接口)

    package cn.tx.mapper;
    
    import java.util.List;
    import cn.tx.domain.User;
    
    public interface UserMapper {
        
        /**
         * 查询所有的用户
         * @return
         */
        public List<User> findAll();
        
    }
    
  5. 在resources目录下,创建mapper文件夹。编写UserMapper.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">
    <mapper namespace="com.qcbyjy.mapper.UserMapper">
        <select id="findAll" resultType="com.qcbyjy.domain.User">
            select * from user;
        </select>
    </mapper>
    
    1. mapper namespace=“com.qcbyjy.mapper.UserMapper”,叫名称空间,表明以后查找UserMapper接口中的findAll的方法。
    2. select id="findAll"中的id属性编写的UserMapper接口中的方法的名称,固定的。
    3. resultType="com.qcbyjy.domain.User"表明的是findAll方法的返回值类型。
  6. 编写主配置文件,在resources目录下创建SqlMapConfig.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>
        <!-- 配置环境们 -->
        <environments default="mysql">
            <!-- 配置具体的环境 -->
            <environment id="mysql">
                <!-- 配置事务管理类型 -->
                <transactionManager type="JDBC"/>
                <!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///mybatis_db"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        
        <!-- 加载映射的配置文件 -->
        <mappers>
            <mapper resource="mappers/UserMapper.xml"/>
        </mappers>
    </configuration>
    

    1.配置环境(environments)

    default=“mysql”:指定默认使用的数据库环境。

    子标签 定义了名为 mysql 的环境。

    transactionManager type=“JDBC”:声明使用 JDBC 事务管理方式。

    配置数据源,类型为连接池(POOLED)。

    包括数据库驱动类、连接 URL、用户名和密码。

    2.加载映射文件(mappers)

    :加载位于 resources/mappers/ 目录下的 UserMapper.xml 文件,定义 SQL 语句和接口映射关系

  7. 编写入门程序

    1.加载配置文件

    使用 MyBatis 提供的 Resources 工具类加载 SqlMapConfig.xml。

    2.构建 SqlSessionFactory

    通过 SqlSessionFactoryBuilder 构建 SqlSessionFactory 工厂,用于创建 SqlSession。

    3.获取 SqlSession

    调用 openSession() 方法创建 SqlSession,用于执行 SQL 语句。

    4.调用 Mapper 接口

    使用 getMapper(UserMapper.class) 获取 UserMapper 接口的动态代理对象。

    调用 findAll() 方法执行 SQL 查询。

    5.输出结果

    遍历查询结果,打印用户信息。

    6.释放资源

    关闭 SqlSession 和 InputStream,避免资源泄漏。

    package cn.tx.test;
    
    import java.io.InputStream;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import cn.tx.domain.User;
    import cn.tx.mapper.UserMapper;
    
    public class UserTest {
        
        /**
         * 测试查询所有的方法
         * @throws Exception 
         */
        @Test
        public void testFindAll() throws Exception {
            // 加载主配置文件,目的是构建SqlSessionFactory的对象
            InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 创建SqlSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            // 使用SqlSessionFactory工厂对象创建SqlSession对象
            SqlSession session = factory.openSession();
            // 通过session创建UserMapper接口的代理对象
            UserMapper mapper = session.getMapper(UserMapper.class);
            // 调用查询所有的方法
            List<User> list = mapper.findAll();
            // 遍历集合
            for (User user : list) {
                System.out.println(user);
            }
            // 释放资源
            session.close();
            in.close();
        }
      
        @Test
        public void run2() throws Exception {
            // 加载配置文件
            InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 构建SqlSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
            // 获取到session对象
            SqlSession session = factory.openSession();
            // 查询所有的数据
            List<User> list = session.selectList("com.qcbyjy.mapper.UserMapper.findAll");
            // 变量集合
            for (User user : list) {
                System.out.println(user);
            }
            // 关闭资源
            session.close();
            inputStream.close();
        } 
    }
    

http://www.kler.cn/a/441727.html

相关文章:

  • 大数据处理之数据去重、TopN统计与倒排索引的Hadoop实现
  • 为AI聊天工具添加一个知识系统 之56 前端工具:知识图谱、语义网络和认知地图 之1
  • UDP協議與代理IP介紹
  • 【0x04】HCI_Connection_Request事件详解
  • Flowable 审核功能封装
  • Qt按钮美化教程
  • websocket 服务 pinia 全局配置
  • 【后端面试总结】线程间通信的方法、特点与实现
  • GLB格式转换为STL格式
  • MAC虚拟机上安装WDA环境
  • [创业之路-196]:华为成功经验的总结与教训简单总结
  • Docker 安装 Seata2.0.0 (快速配置)
  • Django基础 - 01入门简介
  • .Net Core配置使用Log4Net日志记录
  • 梳理你的思路(从OOP到架构设计)_认识EIT造形与内涵
  • 编译glibc
  • 【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节
  • 商业智能汽车充电桩 功能介绍
  • SpringBoot整合MybatisPlus报错Bean不存在:NoSuchBeanDefinitionException
  • C#高级:Winform桌面开发中TreeView的基础例子
  • PH热榜 | 2024-12-17
  • 【多维 DP】力扣2400. 恰好移动 k 步到达某一位置的方法数目
  • 陕西科技大学《2024年807自动控制原理真题》 (完整版)
  • You need to call SQLitePCL.raw.SetProvider()
  • Java中的设计模式全解及电商应用场景示例
  • IP数据云查询IP归属地信息