Mybatis 基础入门 -史上最简单的示例,从创建到基本的CRUD

目录

简介:

项目创建:

     创建:

     导入maven依赖

      创建mybatis工具类

        创建配置文件

                 新建工具类

基本使用:

 查询:

 插入:

修改:

删除:


简介:

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

项目创建:

     创建:

             

          

创建成功

     导入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">
    <parent>
        <artifactId>TestMavenv</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mybatis-Study</artifactId>
   <!--导入依赖-->
    <dependencies>
      <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</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.11</version>
        </dependency>

    </dependencies>
<!--配置文件过滤设置-->
    <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>
</project>

      创建mybatis工具类

 

         创建配置文件

                        

                      配置文件放到resource的文件夹里

<?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.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="root"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

      

   新建工具类

 项目结构

package com.kuang.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;

/**
 * @program: TestMavenv
 * @description: mybatis工具类
 * @author: 康世行
 * @create: 2021-03-27 11:35
 * SqlSessionFactory
 */
public class MybatisUtils {
   static SqlSessionFactory sqlSessionFactory=null;
    static {
        try {
            //使用mybatis第一步;获取sqlsessionFactory对象,用于获取SQL执行对象。
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
              sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }

    }
    /**
    *@Description: 执行sql的对象
    *@Param: 
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
    public static SqlSession getsqlsessiton(){
        SqlSession sqlSession = sqlSessionFactory.openSession();//获取执行SQL的对象
        return sqlSession;
    }
}

基本使用:

            1.新建实体(对应你自己使用的数据库里的表)

                

package com.kuang.pojo;

/**
 * @program: TestMavenv
 * @description: 实体
 * @author: 康世行
 * @create: 2021-03-27 11:49
 */
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 User() {
    }

    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 + '\'' +
                '}';
    }
}

            2.新建DAO层接口

         

package com.kuang.dao;

import com.kuang.pojo.User;

import java.util.List;

/**
 * @program: TestMavenv
 * @description: DAo接口
 * @author: 康世行
 * @create: 2021-03-27 12:50
 */
public interface UserDAo {
    /**
    *@Description: 获取用户信息
    *@Param: 
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
    List<User> getUserList();
    /**
    *@Description: 插入用户信息
    *@Param: id,name ,pwd
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
    int insertInfo(User user);
    /**
    *@Description: 修改用户信息
    *@Param: user
    *@return: 1或0
    *@Author: 康世行
    *@date: 2021-03-27
    */
    int updateInfo(User user);
    /**
    *@Description: 删除指定用户
    *@Param:
    *@return:
    *@Author: 康世行
    *@date: 2021-03-27
    */
    int deletInfo(int id);
}

 查询:

                   新建UserMappr.xml文件,用于实现UserDAo接口,相当于实现类。

             

<?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.kuang.dao.UserDAo">
    <!--查询 id="接口里的方法名称 " resultype ="返回值类型"--> 
    <select id="getUserList" resultType="com.kuang.pojo.User">
        select * from User
    </select>
    <!--插入 id="接口里的方法名称 " parameterType="参数类型" -->
    <insert id="insertInfo" parameterType="com.kuang.pojo.User">
        insert into  mybatis.User(id,name ,pwd) values (#{id},#{name},#{pwd})
    </insert>
    <!--修改-->
    <update id="updateInfo" parameterType="com.kuang.pojo.User">
        update  mybatis.User set name=#{name} where id=#{id} and pwd=#{pwd}
    </update>
    <!--删除-->
    <delete id="deletInfo" parameterType="int">
        delete from mybatis.User where id = #{id}
    </delete>
</mapper>

       回到mybatis-config.xml里面完善下配置文件,注册mapper(添加红框里的内容)

       resourec里的地址根据你自己的mappr文件的地址填写即可

       

            调用测试方法:

           

 /**
    *@Description: 查询
    *@Param: 
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
    @Test
    public void getUserIfo(){
        //第一步获取sqlsession对象
        SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
        //第二步执行(通过class文件获取UserDAo对象) 第一种方式
        UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
        List<User> userList = mapper.getUserList();
        //遍历数组
        for (User user : userList) {
            System.out.println(user);
        }
        //释放资源
        getsqlsessiton.close();
    }

             结果:

             

 插入:

             调用测试方法:

 /**
    *@Description: 插入一个用户
    *@Param:  
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
@Test
    public void insertIfo(){
        //第一步获取sqlsession对象
        SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
        //第二步获取对象
        UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
        int i = mapper.insertInfo(new User(19980, "ksh", "aaa"));
        if(i>0){
            System.out.println(i);
            System.out.println("信息插入成功");
            //提交事务
            getsqlsessiton.commit();
        }else {
            System.out.println("信息插入失败");
        }
        getsqlsessiton.close();
    }

 这里需要注意下,事务。getsqlsessiton.commit();提交事务,如果落了这步数据就不会插入到数据库。  (增删改都需要这步)         

 结果:

修改:      

           调用测试方法:

  /**
    *@Description: 修改用户信息
    *@Param: 
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
    @Test
    public void updateInfo(){
        //第一步获取 sqlSession对象
        SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
        //第二步获取接口的对象
        UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
        //执行方法
        int i = mapper.updateInfo(new User(12, "aaa", "a"));
        if(i>0){
            System.out.println("信息修改成功");
            //提交事务
            getsqlsessiton.commit();
        }else {
            System.out.println("信息修改失败");
        }
    }

            结果:

               修改前:

               

               修改后:

          

          

删除:

         调用测试方法:

    

/**
    *@Description: 删除用户信息
    *@Param: 
    *@return: 
    *@Author: 康世行
    *@date: 2021-03-27
    */
    @Test
    public  void  deleteInfo(){
        //第一步获取 sqlSession对象
        SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
        //第二步获取接口的对象
        UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
        int i = mapper.deletInfo(12);
        if(i>0){
            System.out.println("用户删除成功");
            //提交事务
            getsqlsessiton.commit();
        }
    }

           结果:

          

 

       删除之后的表内用户数据(id= 1998的用户已经被删除了)

参考手册:https://mybatis.org/mybatis-3/zh/getting-started.html

 

posted @ 2021-03-27 16:55  康世行  阅读(29)  评论(0编辑  收藏  举报