MyBatis快速入门

目录结构

创建user表,添加数据

mysql> create database mybatis;
Query OK, 1 row affected (0.02 sec)

mysql> create table tb_user(
    -> id int primary key auto_increment,
    -> username varchar(20),
    -> password varchar(20),
    -> gender char(1),
    -> addr varchar(30)
    -> )engine = innodb;
Query OK, 0 rows affected (0.06 sec)
mysql> insert into tb_user(username,password,gender,addr) values('zhangsan','123','m','Beijing'),('lisi','234','f','tianjing'),('wangwu','111','m','Shanghai');           
Query OK, 3 rows affected (0.03 sec)

创建模块,导入坐标

创建模块

导入MyBatis坐标

mvnrepository.com中查找mybatis  

        <dependency>
            <!--MyBatis依赖-->
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <dependency>
            <!--mysql驱动-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.2</version>
        </dependency>
        <dependency>
            <!--logback日志框架-->
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.14</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!--logback日志框架核心包-->
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.4.14</version>
        </dependency>

resources中创建logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- CONSOLE:表示当前日志信息可以输出到控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="local.content" level="debug" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
</configuration>

编写Mybatis核心配置文件-解决硬编码

用于替换数据库的连接url,username,password等连接信息

在resources中创建mybatis-config.xml

将${}中的值进行替换

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://x.x.x.x:3306/mybatis?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="mybatis_rw"/>
                <property name="password" value="xxxx"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--映射待执行的sql文件路径-->
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

编写SQL映射文件

 在resources中创建sql映射文件,文件命名:"表名Mapper.xml",这里我的表名是tb_user,则命名为Tb_userMapper.xml,配置如下信息:

<?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="local.content.User">
    <select id="selectAll" resultType="local.content.pojo.User">
        select * from tb_user;

    </select>
</mapper>

核心编码

  • 定义POJO类

在PoJo中创建User类,该类要配置在Mapper.xml中的resultType

package local.content.pojo;


import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
//Alt+鼠标左键可以编辑整列
public class User {
           private Integer id;
           private String username;
           private String password;
           private String gender;
           private String addr;

}
  • 加载核心配置文件,获取SqlSessionFactory对象
  • 获取SqlSession对象,执行SQL语句
  • 释放资源
package local.content.mybatis;

import local.content.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.InputStream;
import java.util.List;
// MyBatis快速入门
public class MyBatisDemo {

    public static void main(String[] args) throws Exception {
        // 1. 加载配置文件
        String resource = "mybatis-config.xml";
        // 2. 创建SqlSessionFactory
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 3. 创建SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 4. 执行sql
        //sqlSession.selectList("namespace.id");
        List<User> users = sqlSession.selectList("local.content.User.selectAll");
        System.out.println(users);
        // 5. 释放资源
        sqlSession.close();
    }
}

报错处理

1,No SLF4J providers were found

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.8.0-beta4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.8.0-beta4</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

2, org.apache.ibatis.exceptions.PersistenceException:

mybatis-config.xml中,第一行将

<?xml version="1.0" encoding="UTF-8" ?>

改为

<?xml version="1.0" encoding="UTF8" ?>

3, SQLNonTransientConnectionException: Could not create connection to database server.

<property name="url" value="jdbc:mysql://192.168.10.129:3358/mybatis?useSSL=false/>

改为

<property name="url" value="jdbc:mysql://192.168.10.129:3358/mybatis?useSSL=false&amp;serverTimezone=UTC"/>

 4, log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).

参考这个解决: 

log4j:WARN No appenders could be found for logger 解决办法-CSDN博客

执行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值