MyBatis第一章 搭建MyBatis的运行环境


在这里插入图片描述

结构图

一 创建Maven工程

1 打包方式设置为jar

2 引入依赖进去

二 创建MyBatis的核心配置文件

框架就是jar包加上配置文件
核心配置文件习惯上命名为
mybatis-config.xml
整合Spring框架后,这个配置文件可以省略

1 配置核心文件

<?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/eshop"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件
    复数标签套单数标签的格式

    -->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

注意:核心文件中可能会报一个字符集设置的错误

Unknown initial character set index '255' received from server. Initial client character

解决的话,就在后面加上一个中加入一个字符设置

dbc:mysql://localhost:3306/eshop?useUnicode=true&amp;characterEncoding=utf8

2 创建mapper接口

MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。

package com.xyt.mabatis.mapper;

public interface UserMapper {
    
    
    int insertUser();
}

3 创建mabatis的映射文件

Object Relational Mapping

ORM:对象关系映射
对象:java的实体类对象
关系:关系型数据库
映射:两者之间对应的关系
在这里插入图片描述
类的实例化对象,描述的是一个具体的事务。表中的一行记录

<?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="com.xyt.mybatis.mapper.UserMapper">
    <!--int insertUser();-->
    <insert id="insertUser">
        insert into t_user values (1,'张三','123',22,'男','[email protected]')
    </insert>

</mapper>

注意:这个字段名,一定要和数据库里的字段名对应上

4 测试文件的写法

在这里插入图片描述

在这里插入图片描述

扫描二维码关注公众号,回复: 16372438 查看本文章
package com.xyt.mybatis.test;

import com.xyt.mybatis.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class MabitsTest1 {
    
    

    /**
     * SqlSession默认不自动提交事务,若需要自动提交事务
     * 可以使用SqlSessionFactory.openSession(true);
     */


    @Test
    public void testMyBatis() throws IOException {
    
    
        //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //获取mapper接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //测试功能
        int result = mapper.insertUser();
        //提交事务
        sqlSession.commit();
        System.out.println("result:"+result);
    }


}

执行两次,数据库里面就多了两条数据
在这里插入图片描述

5 需要代码可以访问gitee仓库去看看

https://gitee.com/wang-sanfeng123/MyBatisTest

6 log4j的日志功能

在子pom中配置这个log4j文件

<!-- log4j日志 -->
<dependency> 
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.7</version> 
 </dependency>

log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n"/>
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug"/>
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info"/>
    </logger>
    <root>
        <level value="debug"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

日志·的级别
FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)
从左到右打印的内容越来越详
在配置日志相关文件时
如果报错,就填写相关信息进去

在这里插入图片描述
日志运行后,生成的信息如下图所示

DEBUG 05-14 21:53:09,963 ==>  Preparing: insert into t_user values (6,'张三','123',22,'男','[email protected]') (BaseJdbcLogger.java:137) 
DEBUG 05-14 21:53:09,986 ==> Parameters:  (BaseJdbcLogger.java:137) 
DEBUG 05-14 21:53:09,998 <==    Updates: 1 (BaseJdbcLogger.java:137) 
result:1

体现了执行得sql语句,和受影响的行数

三 先改方法,后改映射文件

1 Test注解的作用

@Test
注解是JUnit测试的基础,JUnit 4的优势就在于支持了注解。
@Test
的使用 是该方法可以不用main方法调用就可以测试出运行结果,是一种测试方法,

一般函数都需要有main方法调用才能执行,注意被测试的方法必须是public修饰的。

2 增加修改用户信息的测试代码

public  void  testUpdate() throws IOException{
    
    
        InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory
                =new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession =sqlSessionFactory.openSession(true);
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser();
    }
DEBUG 05-14 23:07:28,488 ==>  Preparing: DELETE from t_user where username='lisi'; (BaseJdbcLogger.java:137) 
DEBUG 05-14 23:07:28,524 ==> Parameters:  (BaseJdbcLogger.java:137) 
DEBUG 05-14 23:07:28,546 <==    Updates: 1 (BaseJdbcLogger.java:137) 

3 查找用户信息的代码

在这里插入图片描述
resultType:数据库字段和属性的个数一样

java.lang.NoSuchMethodError: 'boolean org.apache.log4j.Logger.isTraceEnabled()

 <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>

结果

DEBUG 05-15 01:24:01,095 ==>  Preparing: select * from t_user where id=6; (BaseJdbcLogger.java:137) 
DEBUG 05-15 01:24:01,136 ==> Parameters:  (BaseJdbcLogger.java:137) 
DEBUG 05-15 01:24:01,173 <==      Total: 1 (BaseJdbcLogger.java:137) 
User{
    
    id=6, username='张三', password='123', age=22, sex='男', email='[email protected]'}

4 RESULT

DEBUG 05-15 01:33:26,591 ==>  Preparing: select * from t_user where id=6; (BaseJdbcLogger.java:137) 
DEBUG 05-15 01:33:26,626 ==> Parameters:  (BaseJdbcLogger.java:137) 
DEBUG 05-15 01:33:26,650 <==      Total: 1 (BaseJdbcLogger.java:137) 
User{
    
    id=6, username='张三', password='123', age=22, sex='男', email='[email protected]'}
DEBUG 05-15 01:33:26,652 ==>  Preparing: select * from t_user; (BaseJdbcLogger.java:137) 
DEBUG 05-15 01:33:26,653 ==> Parameters:  (BaseJdbcLogger.java:137) 
DEBUG 05-15 01:33:26,659 <==      Total: 8 (BaseJdbcLogger.java:137) 
User{
    
    id=1, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=2, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=4, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=6, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=7, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=8, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=9, username='张三', password='123', age=22, sex='男', email='[email protected]'}
User{
    
    id=10, username='张三', password='123', age=22, sex='男', email='[email protected]'}

四 添加properties的具体步骤

1 基本特征

  • jdbc.properties是一个Java属性文件,用于配置Java数据库连接(JDBC)驱动程序的属性,例如数据库连接URL、用户名、密码、驱动程序类名等。
  • 这些属性是在Java应用程序中读取的,以便连接到数据库并执行数据库操作。JDBC属性文件通常是在Java Web应用程序或桌面应用程序中使用的,可以更方便地配置数据库连接信息,而不需要在代码中硬编码这些信息。

2 传统获取数据库链接的方式

jdbc.properties配置mysql8.的步骤如下:

在项目中创建jdbc.properties文件。

在jdbc.properties文件中添加以下配置:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
jdbc.username=用户名
jdbc.password=密码

其中,jdbc.driver为MySQL驱动程序的类名,jdbc.url为连接MySQL数据库的URL,jdbc.username为连接MySQL数据库的用户名,jdbc.password为连接MySQL数据库的密码。

将MySQL的驱动程序(mysql-connector-java.jar)放置在项目的classpath中。

在Java代码中使用以下代码获取数据库连接:

Properties props = new Properties();
InputStream in = getClass().getResourceAsStream("/jdbc.properties");
props.load(in);
in.close();

String driver = props.getProperty("jdbc.driver");
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");

Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);

其中,getClass().getResourceAsStream("/jdbc.properties")用于获取jdbc.properties文件的输入流,props.load(in)用于加载jdbc.properties文件中的配置。最后,使用DriverManager.getConnection()方法获取数据库连接。


3 mybatis中获取数据库接口的方式

MyBatis 中的 jdbc.properties 文件是一个配置文件,用于配置 MyBatis 的数据源和 JDBC 连接属性。该文件通常包含以下属性:

driver:JDBC 驱动程序的名称或类名。
url:JDBC 数据库连接 URL。
username:数据库用户名。
password:数据库密码。
initialSize:连接池的初始大小。
maxActive:连接池的最大活动连接数。
maxIdle:连接池的最大空闲连接数。
minIdle:连接池的最小空闲连接数。
在使用 MyBatis 进行数据库访问时,可以通过读取 jdbc.properties 文件中的这些属性来配置 MyBatis 的数据源和 JDBC 连接属性。

五 设置类别别名

1 核心配置文件

mybatis-config.xml中加入一些信息
type:需要简化描述的目标
alias如果不设置,默认是类名,如果设置,那么就是一个其自己定义的值

 <!--设置类型别名的方法-->
    <typeAliases>
        <typeAlias type="com.xyt.mybatis.pojo.User" alias="User"></typeAlias>
    </typeAliases>

意义是在UserMapper.xml中少写一些东西

 <select id="getUserList" resultType="User">
       select * from t_user;
    </select>

2 在核心文件中引入一个配置文件

 <!--引入映射文件-->
    <mappers>
        <!--<mapper resource="mappers/UserMapper.xml"/>-->
        <!--
            以包为单位引入映射文件
            要求:
            1、mapper接口所在的包要和映射文件所在的包一致
            2、mapper接口要和映射文件的名字一致
        -->
        <package name="com.xyt.mybatis.mapper"/>
    </mappers>

修改核心文件位置在resource位置下的路径
在这里插入图片描述
com.xyt,mybatis,mapper目录下的文件

猜你喜欢

转载自blog.csdn.net/CNMBZY/article/details/130652451