栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

myBatis快速入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

myBatis快速入门

一、myBatis基本介绍;

MyBatis 是一款优秀的持久层框架,官网地址:mybatis – MyBatis 3 | 简介

用于简化 JDBC 开发;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作;

二、在resources下创建mybatis-config.xml配置核心文件;

 mappers是让表和Pojo中实体类产生对应关系,且它是一个接口;

1、若遇到这个问题java.sql.SQLException: Unknown initial character set index '255' received from server. .....说明mysql的jar包版本太低;更换5.1.47版本即可;

2、Wed Jun 29 17:49:54 CST 2022 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.不影响程序正常运行;

若不想有这部分报红,可在配置文件中使用useSSL=false


logback打印执行过程信息,包括druid的执行过程;辅助看清楚mybatis底层是怎么运行的

三、总结快速入门步骤:

创建实体pojo,配置mybatis-config链接;创建Mapper接口,sqlSessionFactory关联xml文件,执行相关增删查改

(1)创建实体pojo

package pojo;

public class User {
    private  Integer id;
    private  String username;
    private  String password;
    private  String gender;
    private  String addr;

    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 String getGender() {
        return gender;
    }

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

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

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

(2)配置mybatis-config.xml链接




    
        
            
            
            
                
                
                
                
            
        
    
    
        //快速扫描包下的注解一次只能加载一个mapper
        
    

(3)创建Mapper接口

package mapper;

import org.apache.ibatis.annotations.Select;
import pojo.User;

import java.util.List;

public interface UserMapper {
    @Select("select * from tb_user")
    List selectAll();
}

(4)sqlSessionFactory关联xml文件,执行相关增删查改

package test;

import 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 pojo.User;

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

public class MybatisTest {
    @Test
    public void testSelectAll() throws IOException {
        String  resource = "mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//        获取sqlsession对象,相当于之前的获取连接
        SqlSession sqlSession=sqlSessionFactory.openSession();
//        获取Mapper接口嗲里嗲气对象,底层使用的是动态代理
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
//        调用Mapper接口代理对象Crud方法,获取结果
        Listlist=userMapper.selectAll();
        list.forEach(user -> System.out.println(user));
        sqlSession.close();
    }
}增删

增删改的返回值要么是void,要么是int,int 返回的是影响的行数;

///查询

//#{}:执行SQL时,会将#{}占位符替换为?,将来自动设置参数值。如果参数是基本类型或包装类型,那么占位符的名称可以任意写 @Select("select * from tb_user where id=#{id}") List selectById(int id);

//新增

//#{}如果参数是对象类型,占位符的名称就是对象的属性名;
@Insert("insert into tb_user values(null,#{username},#{password},#{gender},#{addr})")
void add(User user);

注意以下代码:

@Test
    public void insertUser() throws IOException {
        String  resource = "mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//        获取sqlsession对象,相当于之前的获取连接,参数true表示自动提交,不设置值默认手动提交
        SqlSession sqlSession=sqlSessionFactory.openSession(true);
//        获取Mapper接口代理对象,底层使用的是动态代理
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
//        调用Mapper接口代理对象Crud方法,获取结果
        User user=new User();
        user.setUsername("张益达");
        user.setPassword("123");
        user.setGender("男");
        user.setAddr("武汉");
        userMapper.add(user);
//        sqlSession.commit();
        sqlSession.close();
    }

//修改

//username=#{username}左边为表的列名,右边为传过来的对象值
@Update("update tb_user set username=#{username},password=#{password},gender=#{gender},addr=#{addr} where id=#{id} ")
int update(User user);

//删除

@Delete("delete from tb_user where id=#{id}")
int delete(int id);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号