MyBatis 快速入门

MyBatis (又称SQL 映射框架)

是一款优秀的持久性框架,用于简化 JDBC开发

JDBC 缺点

1.硬编码

注册驱动

SQL 语句

2.操作繁琐

手动设置参数

手动封装结果集

MyBatis 快速入门

(以案例 通过查询user 表中的所有数据为例)

1.创建 user,添加数据

(下面 表格通过 DataGrip 创建 具体详细步骤可参考以下博客 )

第一次用DatdGrip创建表格_桂花很香,旭很美的博客-CSDN博客_datagrip创建表第一打开DataGrip啥也没有第二步创建Mysql数据库第三步输入账号密码,点击测试连接连接失败,需要设置时区将时区设置为亚洲上海然后在测试:成功点击ok然后新建一个Schema取个名字,ok开一个窗口就可以输入命令了命令:CREATE TABLE `cst_customer` ( `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `https://blog.csdn.net/weixin_40959890/article/details/108799521

create database mybatis;
use mybatis;
drop table if exists tb_user;
create table tb_user(
    id int primary key auto_increment,
    username varchar (20),password varchar (20),
    gender char (1),
    addr varchar (30)
    );
INSERT INTO tb_user
VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user
VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user
VALUES (3, '王五', '11', '男', '西安');

2. 创建模块,导入坐标

①创建模块

.file----new ----project----Maven----next--(自己起的名字) ----OK 创建成功

②导入坐标

// 因为是使用Maven来构建的项目,需要将 在MyBatis 官网中找到的依赖 放到  pom.xml 中创建的 
//<dependcies></dependcies> 标签中
// 在创建的模块中的 pom.xml 中导入坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>MyBatis-two</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!--        MyBatis 的依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version> 8.0.30</version>
        </dependency>
        <!--junit单元测试坐标-->
        <dependency>
            <groupId>junit </groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--添加slf4j日志api-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!--添加logback-classic依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!--添加logback-core依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
</project>

下面需要导入一个日志配置文件:

// 将logback.xml 复制到  main 下面的 resources 中 
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
        CONSOLE :表示当前的日志信息是可以输出到控制台的。
    -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%level]  %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="com.MyBatis" level="DEBUG" additivity="false">
        <appender-ref ref="Console"/>
    </logger>


    <!--

      level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
     , 默认debug
      <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
      -->
    <root level="DEBUG">
        <appender-ref ref="Console"/>
    </root>
</configuration>
// 这里的代码来源:B站 黑马程序员  

3.编写Mybatis 核心配置文件——>替换连接信息 解决硬编码的问题

<?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="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--        value="jdbc:mysql:///mybatis?useSSL=false" 连接的url 信息        -->
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <!--                用户名 和密码-->
                <property name="username" value="root"/>
                <property name="password" value="****"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
<!--        指定 当前的 SQL 映射文件的路径的   加载 SQL 映射文件-->
<!--   里面的地址 根据自己文件的路径设置即可->
     <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>
// 这里的代码 参考  https://mybatis.org/mybatis-3/zh/getting-started.html     MyBatis 官网

 // 上面的代码有一些需要注意的点:
<--数据库连接信息 这里的Value 值需要改变 可以参考我上面的代码-->
<--同时需要注意: <property name="driver" value="com.mysql.jdbc.Driver"/>这里面的value值版本较老需要更改为
  <property name="driver" value="com.mysql.cj.jdbc.Driver"/>  -->
 <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
 <property name="driver" value="com.mysql.cj.jdbc.Driver"/> 

4.编写SQL映射文件——(统一管理sql语句,解决硬编码的问题)

// ( 参考)  https://mybatis.org/mybatis-3/zh/getting-started.html
//探究已映射的 SQL 语句
<!--
 namespace: 名称空间
 <mapper namespace="org.mybatis.example.BlogMapper">
 <mapper namespace="test">
 将名称空间的名字改为 test
 名称空间 下面的: select 是用来定义查询语句的
 resultType :返回结果的类型
 id: SQL 语句的唯一标识
-->
<?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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>
// 里面的一些内容是可以进行修改的 

5.编码

// 这里用到了 pojo 类: 主要用来指代那些没有遵循特定的java对象模型,约定或者框架的对象
// MyBatis 中pojo “只是为了封装数据”
// 当sql语句查询到数据之后,如果你要封装到对应的POJO中,一定要保证字段和POJO中的变量名一样,如果不一样,无法封装,这个时候只能使用起别名或修改变量名的方式解决问题.
// 1.根据自己之前创建好的表填写对应的属性
package com.MyBatis.pojo;

public class user {
    //    alt + 鼠标左键 整列编辑
    private Integer id;
    private String username;
    private String password;
    private String gender;

    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;
    }

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

上面的快速生成 get,  set , toString 方法 用到了
alt+ ins  ——————(在Generate中选择对应的方法) 

最后写MyBatis 核心测试类

package com.MyBatis;
import com.MyBatis.pojo.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
//定义 MyBatis 快速入门代码
public class MyBatisDemo {
    public static void main(String[] args) throws IOException {
        // 1.加载 mybatis 的核心配置文件,获取 sqlSessionFactory 对象
//         第一行 定义 配置文件的路径
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        2.获取 sqlSessionFactory 对象,用它来执行SQL
        SqlSession sqlSession = sqlSessionFactory.openSession();
//       sqlSession sqlSession = sqlSessionFactory.openSession();
//      3.执行SQL语句
        List<user> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);
//4.释放资源
        sqlSession.close();
    }
} 
//当因为缺少包出现错误的时候 可以按 alt+ enter 导入需要的包即可

 mybatis – MyBatis 3 | 入门

(MyBatis 官网地址)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值