Mybatis从基础到入门--v1.0

news/2024/7/23 23:25:22 标签: 数据库, mybatis, mysql, java, maven

Mybatis的入门

  • mybatis的环境搭建
  • 环境搭建的注意事项
  • mybatis的入门案例

(1):mybatis的环境搭建:

  • 创建maven工程并导入坐标
  • 创建实体类和dao的接口
  • 创建Mybatis的主配置文件
    • SqlMapConifg.xml
  • 创建映射配置文件
    • IUserDao.xml

(2):环境搭建的注意事项:

  • pom包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>mybaties_01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>
  • 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">
<!-- mybatis的主配置文件 -->
<configuration>
    <environments default="mysql">
        <!-- 配置环境 -->
        <environment id="mysql">
            <!-- 配置mysql的环境-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置事务的类型-->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/essy"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <mapper resource="com/itheima/dao/IUserDao.xml"></mapper>
    </mappers>
</configuration>
  • IUserDao.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.itheima.dao.IUserDao">
    <!--配置查询所有 当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。-->
    <select id="findAll" resultType="com.itheima.domain.User">
        select * from user
    </select>
</mapper>
  • sql语句
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 (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');



  • 目录结构

在这里插入图片描述
(3)入门案例:

java">package com.itheima.test;

import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

得到结果
在这里插入图片描述

值得一提是,需要注意mysql-connector-java版本,有可能不同的版本驱动链接不一样导致出现错误,这里我是8.0.19(可以用mysql-version检测)。jar包是5.1.49。
欢迎继续关注QAQ


http://www.niftyadmin.cn/n/1867047.html

相关文章

Linux常用文本命令

vim的三种操作模式 vim有三种操作模式&#xff0c;分别是命令模式&#xff08;Command mode&#xff09;、输入模式&#xff08;Insert mode&#xff09;和底线命令模式&#xff08;Last line mode&#xff09;。 三种模式切换快捷键&#xff1a; 模式快捷键命令模式ESC输入…

There is no getter for property named ‘username‘ in ‘class com.itheima.domain.User‘

There is no getter for property named ‘username’ in ‘class com.itheima.domain.User’ 原因解决办法 一:原因:一开始以为的是User没有写get方法&#xff0c;后来分析觉得不是&#xff0c;因为一开始是用自动生成的 测试代码(Test) public void testFindByVO(){Query…

SpringBoot、mybatis返回树结构的数据

公司有个业务需要查出所有的课程分类&#xff0c;并将最后一层类别所包含的课查出来。 数据库说明&#xff0c;有一个parent_id 字段是最好的&#xff1a; parent_id的值就是上级的id&#xff0c;一般的话&#xff0c;最顶级的parent_id是设置为0 1.实体类 课程分类&#xff…

Java中方法重载(一:每天一个小细节)

方法重载 方法重载介绍使用方法重载的意义怎么写方法重载 一:方法重载介绍: 在一个类中&#xff0c;我们可以定义多个方法。如果有一系列方法&#xff0c;它们的功能都是类似的&#xff0c;只有参数有所不同&#xff0c;那么&#xff0c;可以把这一组方法名做成同名方法。 二…

Centos8安装MySql,完美解决

本文使用yum安装mysql linux版本为 centos 8 参考&#xff1a; MySQL官网yum源 MySQL官网Linux-yum安装Mysql CentOS 8 yum安装软件时&#xff0c;提示无法从AppStream下载 centos 7 安装 mysql8 以及遇到的问题的解决 navicat连接mysql报错1251的解决方法 如果在本文遇到困惑…

为什要使用where 1 = 1

为什么要用where 1 1这个语句? 原因总结 一:原因 where 11; 这个条件始终为True&#xff0c;在不定数量查询条件情况下&#xff0c;11可以很方便的规范语句。 不用where 11 在多条件查询中的困扰 举个例子&#xff0c;如果您做查询页面&#xff0c;并且&#xff0c;可…

Java获取当前时间距离凌晨的秒数

// 获取当前时间距离凌晨的秒数 public Long getSecondsNextEarlyMorning() {Calendar cal Calendar.getInstance();cal.add(Calendar.DAY_OF_YEAR, 1);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.SECOND, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.MILLISEC…

Java实体类也就是javaBean为什么引用类型比较多

Java实体类也就是javaBean为什么引用类型比较多? 原因扩展 一:原因:int&#xff08;基本数据类型&#xff09;的默认值为0&#xff0c;而Integer默认值为null。 数据库中数据存在为空的情况。 返回数据库字段值是null的话&#xff0c;int类型会报错。 int是基本数据类型&…