10.29第一个Mybatis程序
步骤
-
新建
Maven
工程 -
配置
pom.xml
文件 -
新建项目层级目录
-
书写配置文件
配置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>MybatisStudy</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>MybatisStudy</name>
<!-- FIXME change it to the project's website -->
<url>http://www.mybatisstudy.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<!--单元测试的junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--导入testng-->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.1.0</version>
</dependency>
<!--导入mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!--导入mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--导入log4j依赖-->
<dependency>
<groupId>com.att.inno</groupId>
<artifactId>log4j</artifactId>
<version>1.2.13</version>
</dependency>
</dependencies>
<build>
<finalName>MybatisStudy</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
新建项目层级目录
/MybatisStudy
/idea
/src
/main
/java
/com
/junkingboy
/bean
/mapper
/properties
/resources
/webapp
/WEB-INF
书写配置文件
日志配置文件:--->properties目录下
# logging configuration
log4j.rootLogger=ERROR,stdout
# Mybatis logging configuration
log4j.logger.com.junkingboy=DEBUG
# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p[%t] - %m%n
在日志文件中配置了全局的日志配置、MyBatis 的日志配置和控制台输出,其中 MyBatis 的日志配置用于将 com.junkingboy 包下所有类的日志记录级别设置为 DEBUG
配置WebsiteMapper.xml
文件:
<?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.junkingboy.mapper.WebsiteMapper">
<!--添加一个网站信息-->
<insert id="addWebsite" parameterType="com.junkingboy.bean.Website">
insert into javawebtest.website(name, url, age, country) values(#{name}, #{url}, #{age}, #{country});
</insert>
<!--查询所有网站的信息-->
<select id="selectAllWebsite" resultType="com.junkingboy.bean.Website">
select * from javawebtest.website;
</select>
</mapper>
标签说明:
-
<mapper>
元素是配置文件的根元素,它包含了namespace
属性,该属性值通常设置为“包名+SQL映射文件名”,用于指定唯一的命名空间。 -
<select>
、<insert>
中的信息用于执行查询、添加操作 -
“#{}”
表示一个占位符,相当于“?”
,而“#{name}”
表示该占位符待接收参数的名称为name
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>
<!--设置日志实现类-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--配置mybatis的运行环境-->
<environments default="test">
<environment id="test">
<!--使用JDBC的事务管理-->
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!--配置mysql数据库的驱动-->
<!--配置驱动-->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!--连接url-->
<property name="url" value="jdbc:mysql://localhost:3306/javawebtest?characterEncoding=utf-8"/>
<!--配置用户名和密码-->
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--将mapper文件加入到配置文件中-->
<mappers>
<mapper resource="com/junkingboy/mapper/WebsiteMapper.xml" />
</mappers>
</configuration>
特点:
该文件配置在resources
目录下
为了方便在框架集成时更好地区分各个配置文件,一般将此文件名命名·“mybatis-config.xml”·,该文件用于配置数据库连接信息和 MyBatis 的参数。
创建测试类:
步骤:
-
输入流读取配置文件
-
根据配置信息构建
SqlSessionFactory
对象 -
通过
SqlSessionFactory
对象创建SqlSession
对象 -
使用
SqlSesion
对象的方法执行对数据库的操作
实体类:
package com.junkingboy.test;
import com.junkingboy.bean.Website;
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;
/**
* @description:测试Mybatis
* @data: 2021/10/29 17:53
* @author: Lucifer
*/
public class TestWebsite {
public static void main(String[] args) throws IOException {
/*
步骤:
- 输入流读取配置文件
- 根据配置信息构建`SqlSessionFactory`对象
- 通过`SqlSessionFactory`对象创建`SqlSession`对象
- 使用`SqlSesion`对象的方法执行对数据库的操作
*/
//io流读取配置文件
InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
//根据配置文件构建SqlSessionFactory对象
//SqlSessionFactoryBuilder是SqlSessionFactory接口的实现类,提供了创建对象的方法
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
//通过SqlSessionFactory对象创建SqlSession对象
SqlSession ss = ssf.openSession();
/*SqlSession执行文件中定义的SQL,并返回映射结果*/
//添加网站--->创建Website的bean对象
Website website = new Website();
website.setName("帅气俊!");
website.setUrl("http://localhost/");
website.setAge(22);
website.setCountry("CN");
//使用SqlSession下的方法执行插入操作
/*
传参:
- xml中定义的属性名称
- 需要插入的对象
*/
ss.insert("com.junkingboy.mapper.WebsiteMapper.addWebsite", website);
//查看所有的网站--->封装成一个list对象
List<Website> listWeb = ss.selectList("com.juningboy.mapper.WebsiteMapper.selectAllWebsite");
//读取list内容
listWeb.forEach(System.out::println);
//提交事务
ss.commit();
//关闭SqlSession连接
ss.close();
}
}