SSM 实训笔记 -13- MyBatis 入门实例,快速实现增删改查(maven)

版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。觉得此文有用的,不嫌麻烦的,就留个言呐,或者点个赞呐,要是嫌麻烦呢,也麻烦点个赞嘛 https://blog.csdn.net/qq_40147863/article/details/86475767

SSM 实训笔记 -13- MyBatis 入门实例,快速实现增删改查(maven)

本系列文章一直没出现 Mybatis,一步一步学习,今天整理 MyBatis 入门实例

本篇内容:

(1)使用 MyBatis 快速实现增删改查
(2)使用 MySQL 数据库
(3)小项目 github 地址:

https://github.com/xpwi/mybatistest

一、搭建数据库

(1)我们还采用之前的数据库,只需要这样一个表:

(2)插入一些数据:

二、创建 Maven 项目,及配置

(1)新建项目:

(2)选择组名:

(3)项目名,本地位置:

(4)右下角有一个提示,点击右边的选项,自动导入:

(5)pom.xml 文件配置:

<dependencies>
        <!-- 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>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

(6)创建 resources/jdbcConfig.properties 文件:

并配置自己的数据库信息

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC
username=root
password=密码

(7)创建 mybatisConfig.xml 文件:

  • 注释非常详细
<?xml version="1.0" encoding="UTF-8" ?>
<!--命名空间在 MyBatis 官网上可以找到-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <!--加载 jdbcConfig.properties 是 jdbc 配置文件-->
    <properties resource="jdbcConfig.properties"> </properties>
    <!--default 的值要和下面的 id 一致-->
    <environments default="mysql">
        <environment id="mysql">
            <!--这里基本都是使用 JDBC -->
            <transactionManager type="JDBC"></transactionManager>
            <!--使用 POOLED-->
            <dataSource type="POOLED">
                <!--name 的值和 jdbc Template 有些不一致, 记住就好-->
                <!--然后以变量的形式加载 jdbcConfig.properties 文件中的配置,当然也可以直接在这里写-->
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"></property>
                <property name="username" value="${username}"></property>
                <property name="password" value="${password}"></property>
            </dataSource>
        </environment>
    </environments>

    <!--这里要配置 mapper 文件-->
    <mappers>
        <!--该文件用来定义 SQL 语句, 对数据库的操作-->
        <!--这里可以使用插件根据数据库字段自动生成,详见:https://blog.csdn.net/qq_40147863/article/details/85886166-->
        <!--当然也只有直接在这里写,但是一般比较多,都是另写文件,这里引入文件,不再同一目录需要加上路径-->
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

三、编写测试类

(1)创建 src/main/java/com/xpwi/pojo/User.java 文件:

  • !要对应数据库中相应字段名
package com.xpwi.pojo;

//本文件可使用插件自动生成,详见:https://blog.csdn.net/qq_40147863/article/details/85886166
//实体类中的属性对应数据库中的字段, 再加上 get set 方法
public class User {
    private int id;
    private String uname;
    private String upwd;
    private String lastLoginTime;

    public int getId() {
        return id;
    }

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

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpwd() {
        return upwd;
    }

    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }

    public String getLastLoginTime() {
        return lastLoginTime;
    }

    public void setLastLoginTime(String lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    private String role;


}

(2)回到 resources 目录下,创建 UserMapper.xml 文件:

  • 定义 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">

<!--本文件可使用插件自动生成,详见:https://blog.csdn.net/qq_40147863/article/details/85886166-->
<!--这里只需要下 mapper 标签-->
<mapper namespace="com.xpwi.mapper.UserMapper">
    <!--查询表中所有信息-->
    <!--返回类型 com.xpwi.pojo.User 实体类,也可以一并自动生成-->
    <select id="findAll" resultType="com.xpwi.pojo.User">
        select * from password
    </select>
    <!--根据用户 id 查询信息-->
    <select id="findUserById" resultType="com.xpwi.pojo.User" parameterType="int">
      select * from password where id=#{id}
    </select>
    <!--插入数据-->
    <insert id="insert" parameterType="com.xpwi.pojo.User">
      insert into password(uname,upwd,role) values(#{uname},#{upwd},#{role})
    </insert>
    <!--更新修改数据-->
    <update id="update" parameterType="com.xpwi.pojo.User">
      update  password set uname=#{uname},upwd=#{upwd},role=#{role} where id=#{id}
    </update>
    <!--根据 id 删除数据-->
    <delete id="delete" parameterType="int">
    delete from password where id=#{id}
    </delete>
</mapper>

(3)编写测试类:

import com.xpwi.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

public class TestMyBatis {

    @Test
    public void update(){
        InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
        SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
        SqlSession sqlSession = sessionFactory.openSession();
        String str = "com.xpwi.mapper.UserMapper.update";
        User user = new User();
        user.setId(30);
        user.setUname("新修改的");
        user.setUpwd("987654321");
        user.setRole("student");
        try {

            int update = sqlSession.update(str, user);
            sqlSession.commit();
            System.out.println("更新 "+update+"条记录");
        }catch (Exception e){
            sqlSession.rollback();
        }

    }

//    @Test
    public void insert(){
        InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
        SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
        SqlSession sqlSession = sessionFactory.openSession();
        String str = "com.xpwi.mapper.UserMapper.insert";
        User user = new User();
        user.setUname("新添加的");
        user.setUpwd("987654321");
        user.setRole("student");
        try {
            int insert = sqlSession.insert(str, user);
            sqlSession.commit();
            System.out.println("添加 "+insert+"条记录");
        }catch (Exception e){
            sqlSession.rollback();
        }
    }

//    @Test
    public void delete(){
        InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
        SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
        SqlSession sqlSession = sessionFactory.openSession();
        String str = "com.xpwi.mapper.UserMapper.delete";
        int delete = sqlSession.delete(str,32);
        sqlSession.commit();
        System.out.println("删除 "+delete+"条记录");
    }

//    @Test
    public void findAll(){
        InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
        SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
        SqlSession sqlSession = sessionFactory.openSession();
        String str = "com.xpwi.mapper.UserMapper.findAll";
        List<Object> objects = sqlSession.selectList(str);
        for (Object obj:objects) {
            User user= (User) obj;
            System.out.println(user.getUname());
            System.out.println(user.getUpwd());
            System.out.println("------------");
        }
    }

//    @Test
    public void findUserById() {
        InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
        SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
        SqlSession sqlSession = sessionFactory.openSession();
        String str = "com.xpwi.mapper.UserMapper.findUserById";
        User o = (User)sqlSession.selectOne(str,1);
        System.out.println(o.getUname());

    }
}

四、优化

本篇还可以优化,就是实体类,及 Mapper 的 xml 文件,都可以使用 MyBatis-generator 插件自动生成,使用方法详见:mybatis-generator 详细配置及使用,爬坑记录,本篇入门实例,采用手写,所以说还是非常的快速好用的

更多文章链接

支持博主

我正在参加 CSDN 2018 年博客之星评选,希望大家能支持我,
我是【No. 001】号 肖朋伟 ,感谢大家宝贵的一票 ^_^/
投票地址:https://bss.csdn.net/m/topic/blog_star2018/index

猜你喜欢

转载自blog.csdn.net/qq_40147863/article/details/86475767