新建Maven
工程
配置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(); } }