Mybatis一:环境搭建及其入门案例

本文介绍了Mybatis的基础概念,详细步骤包括在IDEA中配置Mybatis环境,创建数据库表,配置pom.xml和SqlMapConfig.xml,以及编写用户接口和实体类。重点展示了如何利用这些配置实现数据库查询操作。
摘要由CSDN通过智能技术生成


Mybatis简介

   mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
   mybatis通过 xml 或注解的方式将要执行的各种statement配置起来,并通过java对象和statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。
   采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。


在idea中配置Mybatis

第一步:新建一个工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二步:创建一个数据库,这里使用Navicat创建,步骤如下:

在这里插入图片描述
创建表的代码如下:

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','女','北京修正');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第三步:配置相关信息,这里先给大家附上项目文件结构吧,大家自己在操作的时候不会混乱。
在这里插入图片描述
在这里插入图片描述

先配置pom.xml

<?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>com.itheima</groupId>
    <artifactId>day01_eesy_01mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging><!-- 打包方式,jar包 -->
    <!-- 然后下面导入mybatis坐标,也就是依赖,可以去官网去找 -->
    <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.6</version>
        </dependency>
        <!-- 然后是日志信息(如果你需要的话就导一下)-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <!-- 然后是单元测试,需要导入junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

自己建一个SqlMapConfig.xml配置mybatis相关信息,这里面的信息是最重要的:

<?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>
    <!-- 配置环境:
    default:选择叫什么的默认值
    id:配置mysql的环境
    transactionManager:配置事务的类型
    dataSource:配置数据源(连接池),有三个取值 -->

    <environments default="">
        <environment id="">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个人基本信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定映射配置文件的位置,隐射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <mapper resource="com/itheima/dao/IUserDao.xml"/>
    </mappers>
</configuration>

log4j.properties文件代码如下:

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

下面就来编写用户持久层接口和用户实体类代码:

用户持久层User代码如下:

package com.itheima.dao;
import com.itheima.domain.User;
import java.util.List;
/**
 * 用户持久层接口
 */
public interface IUserDao {
    /**
     * 查询所有操作
     */
    List<User> findAll();
}

IUSerDao接口代码如下:

package com.itheima.domain;

import java.io.Serializable;
import java.util.Date;

/**
 * 这里是创建实体类的代码
 */
public class User implements Serializable {
    //我们让实体类和数据库中的属性字段保持一致
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    //生成getter和setter方法
    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;
    }
    //然后再生成toString方法
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

第四步:利用上面配置信息实现数据库的信息查询,Mybatis代码如下:

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.InputStream;
import java.util.List;

/**
 * mybatis入门案例
 */
public class Mybatis {
    public static void main(String[] args) throws Exception {
        //1.读取配置文件,连接数据库
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory,有了工厂可以生成操作对象
        //SqlSessionFactoryBuilder是用来创建工程的构建者
        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();
    }
}

总结

关于mybatis这个类里面设计了好几种模式,下一篇博客会专门分析其原理及实现机制。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值