• Mybatis——Mybatis入门项目从创建到完成的完整过程【单表的增删改查】


    1. 前期准备

    1.1 新建库建表

    SQL文件

    #创建数据库ssm
    CREATE DATABASE ssm DEFAULT CHARSET utf8;
    
    #使用(打开)ssm数据库
    use ssm;
    
    #创建表student
    CREATE TABLE `student` (
    `id` int(11)  AUTO_INCREMENT primary key ,
    `name` varchar(255) DEFAULT NULL,
    `email` varchar(255) DEFAULT NULL,
    `age` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    insert into student(name,email,age) values('张三','zhangsan@126.com',22);
    insert into student(name,email,age) values('李四','lisi@126.com',21);
    insert into student(name,email,age) values('王五','wangwu@163.com',22);
    insert into student(name,email,age) values('赵六','zhaoliun@qq.com',24);
    select * from student;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    1. 2 新建maven项目

    关于Maven的配置请参考以下文章:

    maven的下载以及安装
    idea中Maven的配置,项目的创建

    新建maven模块
    在这里插入图片描述
    第二步:进入模块创建窗口
    在这里插入图片描述
    第四步:new Moudle
    在这里插入图片描述
    第五步:选择Maven
    在这里插入图片描述
    第六步:输入项目名,修改仓库地址等信息
    在这里插入图片描述

    在这里插入图片描述

    1.3 修改目录

    将项目目录补充完整
    在这里插入图片描述

    1.4 在idea中添加数据库的可视化

    在这里插入图片描述

    选择Mysql后执行以下操作
    在这里插入图片描述

    2. 后期实现

    2.1 修改pom.xml文件,添加依赖 和资源文件指定

    添加mybatis和mysql的依赖

     
        <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatisartifactId>
          <version>3.5.6version>
        dependency>
        
        <dependency>
          <groupId>mysqlgroupId>
          <artifactId>mysql-connector-javaartifactId>
          <version>8.0.29version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在build标签中添加资源文件的指定

      
        <resources>
          <resource>
            <directory>src/main/javadirectory>
            <includes>
              <include>**/*.xmlinclude>
              <include>**/*.propertiesinclude>
            includes>
          resource>
    
          <resource>
            <directory>src/test/javadirectory>
            <includes>
              <include>**/*.xmlinclude>
              <include>**/*.propertiesinclude>
            includes>
          resource>
        resources>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2.2 添加jdbc.properties属性文件(数据库的配置)

    复制时修改名称和密码

    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
    username=root
    password=111111
    
    • 1
    • 2
    • 3
    • 4

    2.3 添加SqlMapConfig.xml文件,MyBatis的核心配置文件

    
    DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
        
        <properties resource="jdbc.properties">properties>
    
        
        <settings>
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        settings>
    
        <typeAliases>
            
    
            
            <package name="com.lcl.pojo">package>
        typeAliases>
    
        
        <environments default="development">
            <environment id="development">
                
                <transactionManager type="JDBC">transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                dataSource>
            environment>
        environments>
    
        
        <mappers>
            
            <mapper resource="StudentMapper.xml">mapper>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    2.4 创建实体类Student,用来封装数据

    不用说,此项最简单直接生成即可,需要有属性的get和set方法,以及三个构造器:无参构造器,所有属性构造器,缺少主键的构造器,以及toString 方法【方便输出】

    public class Student {
        private Integer id;
        private String name;
        private String email;
        private Integer age;
    
        public Student() {
        }
    
        public Student(Integer id, String name, String email, Integer age) {
            this.id = id;
            this.name = name;
            this.email = email;
            this.age = age;
        }
    
        public Student(String name, String email, Integer age) {
            this.name = name;
            this.email = email;
            this.age = age;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", email='" + email + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    2.5 添加完成学生表的增删改查的功能的StudentMapper.xml文件

    实际上就是sql语句的编写,

    
    DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    
    
    <mapper namespace="lcl">
        
        <select id="getAll" resultType="student" >
            select id,name,email,age from student
        select>
    
        
        
        <select id="getById" parameterType="int" resultType="student">
            select id,name,email,age from student where id = #{id}
        select>
    
        
        <select id="getByName" parameterType="string" resultType="student">
            select id,name,email,age from student where name like '%${name}%'
        select>
    
        
        <insert id="insert" parameterType="student">
            insert into student(name,email,age) values (#{name},#{email},#{age})
        insert>
    
        
        <delete id="delete" parameterType="int">
            delete from student where id = #{id}
        delete>
    
        
        <update id="update" parameterType="student">
            update student set name=#{name},email=#{email},age=#{age}
            where id=#{id}
        update>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    3. 实现测试

    3.1 创建测试类,进行功能测试

    测试项目的增删改查功能
       采用注解的形式,完成刚开始的获取SqlSession对象,以及使用After完成最后关闭SqlSession对象的操作。

    public class MyTest {T
    
        SqlSession sqlSession;
    
        @Before
        public void openSqlSession() throws IOException {
            //使用文件流读取核心配置文件
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
    
            //创建SqlSessionFactory工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
    
            //取出SqlSession对象
            sqlSession = factory.openSession();
        }
    
        @After
        public void closeSqlSession(){
            //关闭SqlSession
            sqlSession.close();
        }
    
    
        @Test
        public void testGetAll() throws IOException {
            //完成查询操作
            List<Student> studentList = sqlSession.selectList("lcl.getAll");
            studentList.forEach(student -> System.out.println(student));
        }
    
        @Test
        public void testGetById() throws IOException {
            //执行查询语句
            Student stu = sqlSession.selectOne("lcl.getById", 1);
            System.out.println(stu);
        }
    
        /*一下均可修改*/
    
        @Test
        public void testGetByName() throws IOException {
            //读取配置文件
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
            //创建SqlSessionFactory
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //读取SqlSession对象
            SqlSession sqlSession = factory.openSession();
            //执行查询
            List<Student> studentList = sqlSession.selectList("lcl.getByName","an");
            studentList.forEach(student -> System.out.println(student));
            //关闭资源
            sqlSession.close();
        }
    
        @Test
        public void testInsert() throws IOException {
            int num = sqlSession.insert("lcl.insert",new Student("zhaoliu","zhaoliu@126.com",21));
            //在执行增删改操作时,需要手动提交事务
            sqlSession.commit();
            System.out.println(num);
        }
    
        @Test
        public void testDelete() throws IOException {
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
            //创建SqlSessionFactory
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //创建SqlSession对象
            SqlSession sqlSession = factory.openSession();
            //执行删除语句
            int num = sqlSession.delete("lcl.delete",6);
            System.out.println(num);
            //提交事务并关闭资源
            sqlSession.commit();
            sqlSession.close();
        }
    
        @Test
        public void testUpdate() throws IOException {
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
            //创建SqlSessionFactory
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //创建SqlSession对象
            SqlSession sqlSession = factory.openSession();
            //执行删除语句
            int num = sqlSession.update("lcl.update",new Student(3,"王五","王五@126.com",22));
            System.out.println(num);
            //提交事务并关闭资源
            sqlSession.commit();
            sqlSession.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
  • 相关阅读:
    新版本下如何通过外部网络访问wsl
    加成序列(迭代加深)
    刷题记录:牛客NC14701取数游戏2
    c语言入门---数据在内存中的存储
    python自动化测试面试题
    Docker遇到的一些问题和感想
    高NA镜头系统中的高级PSF计算
    [vectoreStore]--内存向量存储组件开发
    ijkplayer基于rtsp直播延时的深度优化
    Android 休眠流程(三)
  • 原文地址:https://blog.csdn.net/weixin_44606952/article/details/126577517