Mybatis数据持久层框架的使用之增加修改与删除

2023-11-26 16:22:24 浏览数 (2)

Mybatis特性

支持定制化sql,

避免几乎所有的JDBC代码和手动设置参数获取结果集。换句话mybatis 就是JDBC的封装。

可以实用简单的xml或注解用于配置和原始映射。将接口和java的POJO(普通的java对象)映射成数据库中的记录。可以直接面向接口编程。有接口 不需要有实现类。

半自动的ORM映射框架。

mybiatis下载地址

https://github.com/mybatis/mybatis-3/releases

主要看官方文档。我们通过包管理 来管理架包。

持久层技术对比

Mybatis环境搭建和映射文件

环境:mysql5.7.x、idea2019、mybatis、

创建 空项目

配置jdk版本等参数

设置maven

创建maven工程

打包方式jar,直接访问数据库就行。

不需要war包不需要服务器的支持。

引入依赖

代码语言:javascript复制
<!--    设置打包方式为jar-->
    <packaging>jar</packaging>

    <dependencies>
<!--        mybatis核心-->
        <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>5.1.3</version>
        </dependency>
    </dependencies>

创建mybatis的核心配置文件

习惯上命名mybatis-config.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://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"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
<!--    引入映射文件-->
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

准备数据库

创建pojo实体对象 User

代码语言:javascript复制
package top.thecat.mybatis.pojo;

public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String email;

//    有参构造
    public User(Integer id, String username, String password, Integer age, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.email = email;
    }
//    无参构造
    public User(){};

//    有参无参构造方法
    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 getEmail() {
        return email;
    }

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

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

创建接口

代码语言:javascript复制
package top.thecat.mybatis.mapper;

public interface UserMapper {

    /**
     * mybatis 面向接口编程的两个一致。
     * 1、映射文件的namespace要和mapper接口的全类名保持一致。
     * 2、映射文件中sql语句的id要和mapper接口中的方法名一致。
     *
     *  表-实体类-mapper接口---映射文件。一一对应
     *
     */

    /**
     * 添加用户信息
     * */
    int insertUser();
}

创建ORM映射文件(对象关系映射)

对象:java实体类对象

关系:关系型数据库

映射:二者之间的关系

创建映射文件

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top.thecat.mybatis.mapper.UserMapper">

<!--    int insertUser();-->
    <insert id="insertUser">
<!--        正常写sql-->
        insert into t_user values(null,'admin','123456','23','男','12345@qq.com');
    </insert>

</mapper>

引入映射文件

代码语言:javascript复制
<!--    引入映射文件-->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>

小插曲

13是你自己的版本号

参考文章:https://zhuanlan.zhihu.com/p/547072781

添加、查询实现

添加数据

log4j 日志框架

pox.xml 添加

代码语言:javascript复制
<!--        log4j日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>

创建配置文文件log4j.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <logger name="java.sql">
        <level value="debug" />
    </logger>

    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>

    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>

</log4j:configuration>

修改信息

修改成功

修改后 id4 的用户名为张三

### 删除

删除id5

UserMapper接口

代码语言:javascript复制
package top.thecat.mybatis.mapper;

public interface UserMapper {

    /**
     * mybatis 面向接口编程的两个一致。
     * 1、映射文件的namespace要和mapper接口的全类名保持一致。
     * 2、映射文件中sql语句的id要和mapper接口中的方法名一致。
     *
     *  表-实体类-mapper接口---映射文件。一一对应
     *
     */

    /**
     * 添加用户信息
     * */
    int insertUser();
    /***
     * 修改信息
     *
     */
    void updateUser();

    /***
     * 删除用户信息
     *
     */
    void deleteUser();
}

UserMapper.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top.thecat.mybatis.mapper.UserMapper">

<!--    int insertUser();-->
    <insert id="insertUser">
<!--        正常写sql-->
        insert into t_user values(null,'admin','123456','23','男','12345@qq.com');
    </insert>

<!--    void updateUser();-->
    <update id="updateUser">
        update t_user set username = '张三' where id = 4
    </update>

<!--    void deleteUser();-->
    <delete id="deleteUser">
        delete from t_user where id= 5 ;
    </delete>

</mapper>

测试文件

代码语言:javascript复制
package top.thecat.mybatis.test;

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 top.thecat.mybatis.mapper.UserMapper;

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

public class MyVatisTest {
    @Test
    public void testMyBatis() throws IOException {
        // 加载核心配置文件。
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        // 获取 SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 获取SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
        // 获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession(true); // 自动提交事务
        // 获取mapper 接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 测试功能
        int result = mapper.insertUser();
//        int result = mapper.selectUser();
        // 手动提交事务
//        sqlSession.commit();
        System.out.println("result:" result);
    }
    @Test
    public void testCRUD() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        修改
//        mapper.updateUser();
//        删除
        mapper.deleteUser();


    }
}

工学云习讯云黔职通自动打卡签到

最终项目展示:

0 人点赞