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

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?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=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

(2)配置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">
<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?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        //快速扫描包下的注解<mapper class="mapper.UserMapper"/>一次只能加载一个mapper
        <package name="mapper"/>
    </mappers>
</configuration>

(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<User> 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方法,获取结果
        List<User>list=userMapper.selectAll();
        list.forEach(user -> System.out.println(user));
        sqlSession.close();
    }
}增删

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

///查询

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

四、XML方式配置SQL语句

Mapper接口的名称要和映射配置文件名称一致,并且将Mapper接口和SQL映射文件放置在同一目录下。

1、接口中User Mapper

package mapper;
import pojo.User;

import java.util.List;

public interface UserMapper {
    ///映射文件xml中配置SQL
    List<User> selectAll();
    List<User> selectById(int id);
    void add(User user);
    int update(User user);
    int delete(int id);
}

2、映射文件

<?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="mapper.UserMapper">
       
    <select id="selectAll" resultType="pojo.User">
        select * from tb_user
    </select>

    <select id="selectById" resultType="pojo.User">
        select * from tb_user where id=#{id}
    </select>
    <!--    parameterType可以写也可以不写;-->
    <insert id="add" parameterType="pojo.User">
        insert into tb_user values(null,#{username},#{password},#{gender},#{addr})
    </insert>
    
    <update id="update">
        update tb_user set username=#{username},password=#{password},gender=#{gender},addr=#{addr} where id=#{id}
    </update>
    
    <delete id="delete" parameterType="int">
        delete from tb_user where id=#{id}
    </delete>
</mapper>

五、mybatis高级使用

地址:https://mp.csdn.net/mp_blog/creation/editor/125603642​​​​​​​

CSDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值