首页 > 数据库 >mybatis操作数据库

mybatis操作数据库

时间:2023-02-19 22:56:44浏览次数:50  
标签:sqlSessionFactory org 数据库 sqlSession user import mybatis 操作

mybatis介绍

mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

mybatis结构

操作步骤

编写数据库对于的实体类entity

@Getter
@Setter
@ToString
public class User {
    private Integer id;
    private String name;
    private String position;
    private LocalDateTime create_time;
    private LocalDateTime modify_time;
    private Integer status;
}
    <dependencies>
<!--      junit5坐标-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>
<!--       mysql坐标-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
<!--        快速构建get set toString方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
<!--        mybatis坐标 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>

    </dependencies>

编写mybatis核心配置文件sqlMapConfig.xml

具体内容参考mybatis官网:https://mybatis.org/mybatis-3/zh/getting-started.html

<?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="dev">
<!--       environment:环境   可配置多套环境 -->
        <environment id="dev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb2?characterEncoding=UTF-8&amp;useUnicode=true&amp;useSSL=false&amp;serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
        
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb2?characterEncoding=UTF-8&amp;useUnicode=true&amp;useSSL=false&amp;serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
<!--        可配置多套数据来源 -->
        <mapper resource="UserMapper.xml"/>
        <mapper resource="UserMapper2.xml"/>
    </mappers>
</configuration>

编写实体类映射文件UserMapper.xml

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace:命名空间
id:sql语句的id    sql唯一标识user.findAll
resultType: 对于的实体类全路径
-->
<mapper namespace="user">
    <select id="findAll" resultType="com.wn.entity.User">
        select * from user
    </select>

    <select id="findOne" parameterType="int" resultType="com.wn.entity.User">
        select * from user where id=#{id}
    </select>

    <insert id="addData" parameterType="com.wn.entity.User">
        insert into user(name,position,create_time,modify_time)
        values(#{name},#{position},#{create_time},#{modify_time})
    </insert>

    <update id="updateData" parameterType="com.wn.entity.User">
        update user set position=#{position} where name=#{name}
    </update>

    <delete id="deleteData" parameterType="String">
        delete from user where name=#{String}
    </delete>
</mapper>

编写操作类

package com.wn.entity;

import jdk.internal.util.xml.impl.Input;
import lombok.val;
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.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.List;


class UserTest {
    @Test
    void selectTest() throws IOException {
        //加载核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        //获取sqlSessionFactory工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获取sqlSession会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行查询全部数据sql
//        List<User> userList = sqlSession.selectList("user.findAll");
//        List<User> userList = sqlSession.selectList("user2.findOne");
        //执行条件查询sql
        List<User> userList = sqlSession.selectList("user.findOne", 1);

        //打印
        userList.forEach(System.out::println);
        //关闭sqlSession会话
        sqlSession.close();
    }
    @Test
    void insertTest() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //插入数据
        User user = new User();
        user.setName("测试插入");
        user.setPosition("测试");
        user.setCreate_time(LocalDateTime.now());
        user.setModify_time(LocalDateTime.now());

        int insertUser = sqlSession.insert("user.addData",user);
        sqlSession.commit();

        System.out.println(insertUser);
        sqlSession.close();
    }
    @Test
    void updateTest() throws IOException {
        InputStream inputStream=Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //更新数据
        User user=new User();
        user.setName("老张");
        user.setPosition("财务");

        int updateUser = sqlSession.update("user.updateData", user);
        sqlSession.commit();

        System.out.println(updateUser);
        sqlSession.close();
    }
    @Test
    void deleteTest() throws IOException {
        InputStream inputStream=Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //指定name用户名删除数据
        int deleteUser = sqlSession.update("user.deleteData", "测试插入");
        sqlSession.commit();

        System.out.println(deleteUser);
        sqlSession.close();
    }


}

标签:sqlSessionFactory,org,数据库,sqlSession,user,import,mybatis,操作
From: https://www.cnblogs.com/wn-garden/p/17135858.html

相关文章

  • Django数据库操作
    1、增#方式一category=models.Category(name='Python')#增加一条name是'Python'的一条数据category.save()#方式二models.Category.objects.create(name='Lin......
  • Java实现对MongoDB的AND、OR和IN操作
    很全的JAVA操作mongodb:​​http://www.blogjava.net/xiaomage234/archive/2012/08/06/384904.html​​ 转的: AND:publicvoidtestAnd(){//agender='female'ANDag......
  • 非关系型数据库的产生背景与分类
    1、关系型数据库遇到的问题2008年左右,网站、论坛、社交网络开始高速发展,关系型数据库的地位受到了很大的挑战。关系型数据库的以下问题逐渐凸显:●难以应付每秒上万次的......
  • 10.MyBatis-Plus的使用
    整合MyBatis-Plus导入依赖在解决逆向工程生成的代码报错时候已经给bianen-common导入了依赖导入数据库的驱动导入驱动和MySql的版本有关,我安装的MySql版本是5.7.36打......
  • 区间和线段树的各种操作
    这篇文章我们来讲一下线段树线段树,适用于对一个数列区间进行操作,可以求这段数列\(i\)到\(j\)的和、乘积、最大值、最小值等等等等,因此线段树有十分多的变种问题提出如......
  • 证书操作
    通过自签名证书的方式生成证书流程根证书的CommonName填写root即可,客户端和服务端证书需要填写域名。根证书的这个字段和客户端证书、服务端证书不能一样。其他所有字段......
  • Azure 在 windows 11 下的 终端模式是如何操作?
    使用AzureCLI登录Azure命令行接口(CLI)又几种身份验证类型,那么如何登录?最简单的入门方法是使用 AzureCloudShell,这样可以自动登录。在本地,可以通过浏览器使......
  • 关于数据库事务隔离级别(Transaction)
    问题背景:最近在学习Spring的事务部分,其中涉及到了Spring事务属性的配置,其中一个isolation把我整懵逼了isolation设置事务的隔离级别DEFAULT:默认隔离级别,会采用......
  • 关于用户登录信息在数据库中的加密方法。
    1.首先我从网上查阅资料明白加密方法有很多种。有MD5加密还有就是Brcypt加密。本次我只要介绍md5加密的方法。首先我们可以直接从网上查找以下加密算法把他打包成一个类......
  • git基础操作
    一、分支分支命名规则开发分支:dev功能分支:feature/功能名称bug分支:bugfix/bug名称预发布分支:release/预发布版本名称列出本地分支:gitbranch列出远程分......