1. 程式人生 > 實用技巧 >mybatis增刪改操作

mybatis增刪改操作

1 增(插入操作)

(1)插入語句使用insert標籤

(2)在對映檔案中使用parameterType屬性指定要插入的資料型別

(3)SQL語句中使用#{實體屬性名}方式引用實體中的屬性值

(4)插入操作使用的API是sqlSession.insert("名稱空間.id", 實體物件)

(5)插入操作涉及資料庫資料變化,所以要使用sqlSession物件顯式地提交事務,即sqlSession.commit(),而查詢操作不需要提交事務。mybaitis中預設事務是不提交的,而jdbc預設提交。

完整的程式碼:

mysql修改欄位型別

alter table user modify column password varchar(40) not null;  

原來設定password是int型別,後面根據需要進行了修改

USE test;
create table `user` (
    `id` int not null ,
    `username` varchar(40) not null ,
    `password` int not null,
    primary key (`id`)
) ENGINE = INNODB DEFAULT charset = utf8;

insert into user(id, username, password) VALUES (1,'zhangsan',123);
insert into user(id, username, password) VALUES (2,'lisi',123);
insert into user(id, username, password) VALUES (3,'wangwu',123);
insert into user(id, username, password) VALUES (4,'zhaoliu',123);
insert into user(id, username, password) VALUES (5,'tianqi',123);

alter table user modify id int auto_increment;

insert into user (id, username, password)
values (null, 'yanjiu', 456);

alter table user modify column password varchar(40) not null;

userMapper.xml

<?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">
<mapper namespace="userMapper">
    
    <!-- 插入操作-->
    <insert id="save" parameterType="com.company.domain.User">
insert into user values (#{id}, #{username}, #{password}); </insert> <!-- 查詢操作--> <select id="findAll" resultType="com.company.domain.User"> select * from user </select> </mapper>

MyBatisTest.java

/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
 */

package com.company.test;

import com.company.domain.User;

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;
import java.util.List;

public class MyBatisTest {

    @Test
    public void test2() throws IOException {

        // 模擬user物件
        User user = new User();
        user.setUsername("tom");
        user.setPassword("abc");

        // 獲得核心配置檔案
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        // 獲得session工廠物件
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        // 獲得session會話物件
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 執行插入操作
        sqlSession.insert("userMapper.save", user);

        // mybatis執行更新操作 ,預設是不提交的,需要手動提交事務
        sqlSession.commit();
        // 釋放資源
        sqlSession.close();

    }

    @Test
    public void test1() throws IOException {
        // 獲得核心配置檔案
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        // 獲得session工廠物件
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        // 獲得session會話物件
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 執行操作,引數:namespace+id
        List<User> userList = sqlSession.selectList("userMapper.findAll");
        // 列印資料
        System.out.println(userList);
        // 釋放資源
        sqlSession.close();

    }
}

  其他的配置,可以看這篇:https://www.cnblogs.com/GumpYan/p/14248550.html