第一个Mybatis程序

今天开始学了mybatis,之前就听说这个框架,所以这次就来尝试一下。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

这篇文章主要讲述一个最最最基本的mybatis程序,然后再一步步的修改。

主要内容如下:

1、创建maven工程,导入jar包

2、创建数据文件

3、创建实体类

4、创建dao接口

5、创建mapper文件

6、创建mybatis主配置文件

7、创建接口的实现类

8、进行测试

一晚上花了2个小时就从网上找了个教程,写了一个demo文件,遇到了一些小错误,但是都解决了!从上面一步一步的介绍:

 第一步:创建maven工程,导入jar包

这个步骤还是非常简单的,再IEDA中建立一个webapp的工程即可,然后建立响应的文件夹,再pom文件中导入相应的jar:

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.4.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.62</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.13</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>6.1.0.Final</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>RELEASE</version>
      <scope>compile</scope>
    </dependency>

  </dependencies>

 这里面有的jar在这个项目中能用到,有的用不了,反正这些jar包都是常用的多导入些也没关系,在我的电脑上,maven不能用,自己搞了好久才能用。

第二步:创建数据库

这一步需要也是很简单,老生常谈的问题。 

create database learnmybatis;

CREATE TABLE `t_student` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(20) NULL,
  `age` INT NULL,
  `score` DOUBLE NULL,
  PRIMARY KEY (`id`));

 第三步:创建实体类

package domain;

public class Student {

        private int id;

        private String name;

        private int age;

        private double score;

        public int getId() {
                return id;
        }

        public void setId(int id) {
                this.id = id;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

        public double getScore() {
                return score;
        }

        public void setScore(double score) {
                this.score = score;
        }
        //省略getter和setter
}

第四步:创建dao接口

这个步骤和之前创建的dao接口一直,就是定义查询数据的方法

package dao;

import domain.Student;

public interface StudentDao {
    public void insertStudent(Student student);
}

第五步:创建mapper文件

这个文件就是专门编写数据库查询语句的

<?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="zhiguo98">
    <!--parameterType可省略-->
    <insert id="insertStudent" parameterType="domain.Student">
        INSERT INTO t_student(name,age,score) VALUES (#{name},#{age},#{score})
    </insert>
</mapper>

注意点:

namespace:命名空间,可以随便命名

insert 对应的是个插入的数据库语句  

id是这个插入语句的唯一代号,不能重复

parameterType是参数类型,可加可不加

下面就是插入语句 注意每个参数的一致性,最好是数据库和实体类保持一致,要不然指不定哪会出错

第六步:创建主配置文件

这个文件是非常重要的,是连接数据库的一些参数和mapper文件的位置

<?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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/learnmybatis?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="yanzhiguo140710"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--注册映射文件-->
        <mapper resource="dao/StudentMapper.xml"/>
    </mappers>
</configuration>

 

 

    <mappers>
        <!--注册映射文件-->
        <mapper resource="dao/StudentMapper.xml"/>
    </mappers>

在主配置文件中配置mapper文件的位置!!! 

第七步:创建接口的实现类

实现之前写的dao接口,实现里面的方法

package dao.impl;

import dao.StudentDao;
import domain.Student;
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;

public class StudentDaoImpl implements StudentDao {

    private SqlSession sqlSession;

    @Override
    public void insertStudent(Student student) {
        try {
            //读取主配置文件
            InputStream input = Resources.getResourceAsStream("mybatis.xml");
            //创建SqlSessionFactory对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
            //创建SqlSession对象
            sqlSession = sessionFactory.openSession();
            //新增数据操作
            sqlSession.insert("insertStudent", student);
            //提交SqlSession
            sqlSession.commit();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}

 上面代码的注释部分是mybatis基础的下层代码查询流程。。。

第八步:进行测试 

这一步需要导入junit的jar,实现测试

package test;

import dao.StudentDao;
import dao.impl.StudentDaoImpl;
import domain.Student;
import org.junit.jupiter.api.Test;

public class StudentTest01 {
    @Test
    public void insertStudent(){
        StudentDao studentDao = new StudentDaoImpl();
        Student student = new Student();
        student.setName("aaa");
        student.setAge(12);
        student.setScore(99.0);
        studentDao.insertStudent(student);
    }
}

结果:

 

我主要在数据库的连接中出了一点点小小的问题,版本问题,把驱动改了就行了,还有一个时区的问题 。总体来说还算顺利,明天接着学!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值