搭建MyBatis:
1,引入相关依赖
<dependencies>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- 单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
<scope>runtime</scope>
</dependency>
</dependencies>
2,数据库连接配置文件:
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.username=root
mysql.password=123456
mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
3,MyBatis的核心配置文件
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 环境配置 --> <!-- 加载类路径下的属性文件 -->
<properties resource="jdbc.properties"/>
<!-- 别名映射-->
<typeAliases>
<package name="com.itheima.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/> <!-- 数据库连接相关配置 ,db.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/itheima/mapper/EmployeeMapper.xml"></mapper>
<!-- <mapper class="com/itheima/mapper/EmployeeMapper.xml"></mapper>-->
</mappers>
</configuration>
MyBatis案例:
1,在数据库创建employee表
2,创建pojo实体:
package com.itheima.pojo;
public class Employee {
private int id;
private String name;
private String position;
private int age;
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", position='" + position + '\'' +
", age=" + age +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3,创建映射文件: EmployeeMapper.xml
注:映射文件需要和pojo在同一路径下,并且需要使用/ 来创建 ,例:cn/hdc/mapper
否则需要在pox.xml 文件中指明映射文件路径,
建议映射文件直接写在resource目录下,不推荐在pox.xml手动配置资源过滤,让它把java目录下的properties和xml等配置文件的过滤开启,使它们能够被导出,在pom.xml中配置开启过滤
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.EmployeeMapper">
<select id="findEmoloyeeById" parameterType="Integer" resultType="employee" >
SELECT * FROM employee WHERE id=#{id}
</select>
<insert id="save" parameterType="employee">
INSERT INTO employee values (null,#{name},#{age},#{position } )
</insert>
<update id="updateEmoployeeById"
parameterType="employee">
UPDATE employee set name=#{name},age=#{age},position =#{position } where id=#{id}
</update>
<delete id="deleteEmployeeById"
parameterType="Integer">
DELETE FROM emoployee where id =#{id}
</delete>
</mapper>
4,创建utils包,里边放置MyBatis工具
为了方便创建会话对象
package com.itheima.utils;
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.Reader;
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory =null;
static {
Reader reader =null;
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
5,编写测试类:
package com.itheima.test;
import com.itheima.pojo.Employee;
import com.itheima.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class MyBatisTest {
@Test
public void findEmoloyeeByIdTest (){
SqlSession session = MyBatisUtils.getSession();
Employee employee = session.selectOne("com.itheima.mapper.EmployeeMapper.findEmoloyeeById",1);
System.out.println(employee);
session.commit();
session.close();
}
@Test
public void saveTest (){
Employee employee = new Employee();
employee.setId(5);
employee.setName("赵六");
employee.setAge(50);
employee.setPosition("总监");
SqlSession session = MyBatisUtils.getSession();
session.update("com.itheima.mapper.EmployeeMapper.save",employee);
System.out.println(employee);
session.commit();
session.close();
}
@Test
public void updateEmoployeeByIdTest (){
Employee employee = new Employee();
employee.setId(4);
employee.setName("赵6");
employee.setAge(11);
employee.setPosition("总监");
SqlSession session = MyBatisUtils.getSession();
session.update("com.itheima.mapper.EmployeeMapper.updateEmoployeeById",employee);
System.out.println(employee);
session.commit();
session.close();
}
@Test
public void deleteEmployeeByIdTest (){
SqlSession session = MyBatisUtils.getSession();
session.update("com.itheima.mapper.EmployeeMapper.deleteEmployeeById",3);
session.commit();
session.close();
}
}
MyBatis工作原理