Mybatis框架入门

一、Mybatis简介

二、Mybatis入门程序

1.环境准备:

  • jdk 8 +

  • MySQL 8+

  • maven-3.6.1

  • IDEA

2.数据库准备

CREATE DATABASE `mybatis`;
 
USE `mybatis`;
 
DROP TABLE IF EXISTS `user`;
 
CREATE TABLE `user` (
  `id` int(20) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `pwd` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
insert  into `user`(`id`,`name`,`pwd`) values (1,'张三','123456'),(2,'李四','abcdef'),(3,'王五','987654');

3.项目结构如图

 (mapper、xmlMapper、model包都是后期Mybatis逆向工程使用到的,前期可以不创建)

 

4.在Maven中导入相关依赖

<?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>MybitisDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>

        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>

        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>

    </dependencies>
    <build>
        <resources>
            <!-- resources文件 -->
            <resource>
        <!-- 可能出现问题说明:Maven静态资源过滤问题 --> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> </plugin> </plugins> </build> </project>

5.编写MyBatis核心配置文件Mybatis-config.xml

 【 注意:在配置MySQL驱动时,mysql-connector-java 6 以上的driver应该改为 com.mysql.cj.jdbc.Driver

       最后的<mappers>....</mappers>不要遗忘~

<?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://localhost:3306/mybatis?characterEncoding=utf-8&amp;serverTimezone=UTC&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper class ="com.kuang.dao.UserMapper"/>
    </mappers>
</configuration>

6.创建实体类

 (get和set方法的生成可以了解扩展一下Lombok插件的用法~)

package com.kuang.enity;

public class User {
    private int id;
    private String name;
    private String pwd;

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    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 String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

 

7.创建Mapper接口

package com.kuang.dao;

import com.kuang.enity.User;

import java.util.List;

public interface UserMapper {
    List<User> selectById ();
    User selectById1 (int id);
    //mapper文件中的update,delete,insert语句是不需要设置返回类型的,它们都是默认返回一个int,所以返回值可以为Integer 或 void
    void insert (User user);
    void delete(int id);
}

8.编写Mapper.xml配置文件

  namespace注意一定不要写错!

 (可以通过xml配置文件中的#{}和${}的区别了解扩展一下SQL注入——SQL注入详解

<?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.kuang.dao.UserMapper">
    <select id="selectById" resultType="com.kuang.enity.User">
        select * from user
    </select>
    <select id="selectById1" resultType="com.kuang.enity.User">
        select * from user where id = #{id}
    </select>
 <insert id="insert"  parameterType="com.kuang.enity.User">
     insert into user(id, name, pwd) values(#{id}, #{name}, #{pwd})
 </insert>
    <delete id="delete">
        delete from user where id = #{id}
    </delete>

</mapper>

 

 

9.编写测试类

  (点击运行 mybatisTest 方法即可对数据库进行数据读写了)

package com.kuang.test;

import com.kuang.dao.UserMapper;
import com.kuang.enity.User;
import org.junit.Before;
import org.junit.Test;
//import com.kuang.Utils.MybatisUtils;
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;

import org.apache.ibatis.session.SqlSession;

public class Mytest {
    private SqlSessionFactory sqlSessionFactory = null;

    @Before

    public void init() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        // 2. 加载SqlMapConfig.xml配置文件

        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        // 3. 创建SqlSessionFactory对象

        this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

    }

    @Test

    public void mybatisTest() throws Exception {
        // 4. 创建SqlSession对象
        //openSession():若括号里为true,则设置为事务自动提交。若不填则默认手动提交,将自动提交设置成false,然后调用sqlSession.commit()方法。
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //5.创建mapper,调用mapper里的方法
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //User user2 = new User(4,"马云","123");
        //userMapper.insert(user2);
        //userMapper.delete(4);
        User user1 = userMapper.selectById1(2);
        //User users = sqlSession.selectOne(1);
        List<User> userList = userMapper.selectById();

        for (User user:userList) {
            System.out.println(user);
            System.out.println("========================");
            //System.out.println(user1);

        }
        //System.out.println(userList);

        // 7. 释放资源

        sqlSession.close();

    }
    
}

 

posted @ 2020-09-12 01:42  JacksonLiyq  阅读(199)  评论(0编辑  收藏  举报