ssm学习笔记23001-mybatis接入和数据库连接实现一个插入数据的操作

mybatis:

是什么,用来干嘛的,同类竞品中有何种优势?

mybatis在idea中的引入:

1、创建一个空工程

2、创建一个空的maven文件:

会自动生成一个pox文件,打包类型配置为jar,添加 mybatis的依赖,mysql驱动依赖,junit依赖并配置好对应的版本号。

  <?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>mybatis_helloword</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 只打jar 包-->
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

        <!-- junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- mysql 驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

3、创建mysql数据库和对应的user表

这一步用navicat界面创建即可。

create table t_user(id int not null auto_increment, username varchar(20) not null default '', primary key(id));

4、创建pojo类和mybatis映射关系

在main-java文件夹下:
创建接pojo类放置的包com.wjw.mybatis.pojo:
创建User类
User,私有成员要和表中的数据一一对应,

package com.wjw.mybatis.pojo;

/**
 * @Author wjwdive
 * @Date 2023/2/19 22:40
 * @Description:
 */
public class User {
    private Integer id;
    private String username;
    private  String password;
    private  Integer age;
    private  String gender;
    private String email;

    //必须要有
    public User() {

    }

    public User(Integer id, String username, String password, Integer age, String gender, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.gender = gender;
        this.email = email;
    }

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

创建mybatis映射文件放置的包com.wjw.mybatis.mapper:
创建接口类:UserMapper
1)映射文件的命名规则:
表所对应的实体类的类名+Mapper.xml
例如:表t_user对应的实体类为User,所对应的映射文件为UserMapper.xml
因此一个映射文件对应一个实体类,对应一张表的操作
MyBatis映射文件用于编写SQL,访问数据库以及操作表中的数据。
MyBatis映射文件存放的位置是src/main/resources/mappers目录下
2)MyBatis中可以面向接口操作数据,要保证两个一致:
a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致。
b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致。

里面定义插入用户的一个接口: int insertUser();

package com.wjw.mybatis.mapper;

/**
 * @Author wjwdive
 * @Date 2023/2/19 22:54
 * @Description:
 */
public interface UserMapper {
    int insertUser();
}

在数据库中建表t_user共这几个字段:
id,username,password,gender,age,email:

主键为id,自增,自动填充0,无符号。

我们此时要配置数据库连接:

创建文件,jdbc.properities文件 用来保存数据库连接信息

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
jdbc.username=root
jdbc.password=0000

创建mybatis-config.xml 配置数据库连接

<?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">
<!-- mybatis 的核心配置文件 -->
<configuration>
    <properties resource="jdbc.properties"/>
    <settings>
        <!--        自动将下划线 映射为驼峰 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <typeAliases>
        <package name=""/>
    </typeAliases>

    <!--    配置连接数据库的环境-->
    <environments default="test">
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--    引入mybatis的映射文件-->
    <mappers>
<!--        <package name=""/>-->
        <mapper resource="UserMapper.xml"></mapper>
    </mappers>
</configuration>

然后就可以写测试类了
在src/test/java/下,创建包com.wjw.mybatis.test

package com.wjw.mybatis.test;

import com.wjw.mybatis.mapper.UserMapper;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

/**
 * @Author wjwdive
 * @Date 2023/2/19 23:32
 * @Description:
 */
public class MyBatisTest {
    @Test
    public void testInsert() throws IOException {
        //获取核心配置文件的输入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取sql的会话对象SqlSession,是mybatis提供的操作数据库对象的方法
        SqlSession sqlSession = sqlSessionFactory.openSession(true);//自动提交事务,需设置参数 为true
        //获取UserMapper的代理实现类对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调用 mapper接口中的方法,实现添加用户信息的功能
        int result = mapper.insertUser();
        //提交事务【不提交事务,会自动回滚执行的脚本】
        sqlSession.commit();
        System.out.println("结果:"+result);

        //关闭连接
        sqlSession.close();
    }
}

运行测试用例,就可以插入数据了;

posted @ 2023-02-22 00:36  wjwdive  阅读(160)  评论(0编辑  收藏  举报