Mybatis框架基础-01

Mybatis框架

1.1获得Mybatis

  • MYbatis框架是一个优秀的持久性框架
  • 现在迁移至Github中
 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
 <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.5.2</version>
 </dependency>

1.2 持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
  • 内存的特点是:断电即失
  • 数据库和io文件可以持久化
  • 持久化是为了不让对象丢失

1.3 持久层

1.4 Mybatis存在的意义

为了简化JDBC的代码,自动化,帮助我们将数据存入数据库
解除了sql和程序代码之间的耦合


2.第一个Mybatis程序

  1. 搭建数据库
  2. 新建maven项目
  3. 删除src目录
  4. 导入相关jar包
<!--导入依赖-->
   <dependencies>
<!--mysql依赖-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.21</version>
       </dependency>

<!--mybatis依赖-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.2</version>
       </dependency>
<!--junit依赖-->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
           <scope>test</scope>
       </dependency>
   </dependencies>

1. 创建一个♥模块

2.先写工具类

package com.wang.utils;

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;

/**
 * @author Charlie Puth
 * @version 1.0
 * 获取SqlSessionFactory对象 --> SqlSession
 **/
public class MybatisUtils {

    private static SqlSessionFactory sqlsessionfactory;


    static {
        try {
            //使用mybatis第一步必须用的
            String resources = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resources);
            sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //有了SqlSessionFactory从而获取SqlSession
    //SqlSession包含了数据库的所有方法

    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlsessionfactory.openSession();
        return sqlSession;
    }
}

3. 编写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">
<!--configuration核心配置文件-->
<configuration>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

4.写实体类

package com.wang.pojo;

/**
* @author Charlie Puth
* @version 1.0
* 实体类
**/
public class student {
  private int student_no;
  private String student_name;
  private int student_contact;
  private int class_no;


  public student() {
  }

  public student(int student_no, String student_name, int student_contact, int class_no) {
      this.student_no = student_no;
      this.student_name = student_name;
      this.student_contact = student_contact;
      this.class_no = class_no;
  }

  @Override
  public String toString() {
      return "student{" +
              "student_no=" + student_no +
              ", student_name='" + student_name + '\'' +
              ", student_contact=" + student_contact +
              ", class_no=" + class_no +
              '}';
  }

  public int getStudent_no() {
      return student_no;
  }

  public void setStudent_no(int student_no) {
      this.student_no = student_no;
  }

  public String getStudent_name() {
      return student_name;
  }

  public void setStudent_name(String student_name) {
      this.student_name = student_name;
  }

  public int getStudent_contact() {
      return student_contact;
  }

  public void setStudent_contact(int student_contact) {
      this.student_contact = student_contact;
  }

  public int getClass_no() {
      return class_no;
  }

  public void setClass_no(int class_no) {
      this.class_no = class_no;
  }
}

5.写接口

package com.wang.dao;

import com.wang.pojo.student;

import java.util.List;

/**
 * @author Charlie Puth
 * @version 1.0
 **/
public interface studentDao {
    List<student> getStuList();
    
}

6.写Mapper实现类

<!--studentDao的实现类-->

<?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">
<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.wang.dao.studentDao">

    <!--select查询语句-->
    <select id="getUserList" resultType="com.wang.pojo.student">
         select * from student;
     </select>

</mapper>

7.测试

package com.wang.dao;

import com.wang.pojo.student;
import com.wang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

/**
 * @author Charlie Puth
 * @version 1.0
 **/
public class stuDaoTest  {

    @Test
    public void test1(){

        //获得sqlsession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //执行SQL
        studentDao mapper = sqlSession.getMapper(studentDao.class);
        List<student> stuList = mapper.getStuList();

        for (student student : stuList) {
            System.out.println(student);
        }

        //关闭SQL session
        sqlSession.close();

    }
}

可能出现的问题

如果连接数据库的时候出现Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually,则是时区有问题通过更改mysql配置解决

解决方案
set global time_zone='+8:00';

初始化失败

在pom.xml中添加

<!--防止资源导出失败的问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值