1.什么是Mybatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。
2.Mybatis快速⼊⻔
小白也可以跟着走。
⭐主要步骤:
1.Maven导包
2.创建数据表以及相对实体类
3.创建MyBatis 的配置⽂件config.xml
4.创建接⼝以及对应的 Mapper.xml、注册Mapper
5.调⽤接⼝的代理对象完成操作
1.Maven导包
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
</dependencies>
2.创建数据表以及相对实体类
1.创建数据表
use mybatis;
create table dome(
id int primary key auto_increment,
name varchar(10),
password varchar(10)
)
2.创建实体类
package com.yt.pojo;
public class Dome {
private int id;
private String name;
private String password;
public Dome(String name, String password) {
this.name = name;
this.password = password;
}
public Dome(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Dome{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
一般用快捷键直接生成,也可以使用 Lombok 插件偷个懒。
例如:
@Data
public class Dome {
private int id;
private String name;
private String password;
}
3.创建MyBatis 的配置⽂件config.xml
<?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>
<!-- 配置MyBatis运⾏环境 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED配置JDBC数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?
useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<!--注意更改为自己的密码-->
<property name="password" value="123456"></property>
</dataSource>
</environment>
</environments>
<!--注册Mapper-->
<mappers>
</mappers>
</configuration>
4.创建接⼝以及对应的 Mapper.xml、注册Mapper
1.创建接⼝
package com.yt.mapper;
import com.yt.pojo.Dome;
import java.util.List;
public interface DomeI {
//增
public int insertDome(Dome dome);
//删
public int deleteDome(int id);
//改
public int updateDome(int id,String name,String password);
//查
public List<Dome> findAll();
}
2.创建Mapper.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.yt.mapper.DomeI">
<insert id="insertDome" parameterType="com.yt.pojo.Dome">
insert into dome (name,password) values(#{name},#{password})
</insert>
<delete id="deleteDome" parameterType="int">
delete from dome where id=#{id}
</delete>
<update id="updateDome" >
//使用param1,param2或arg0,arg1 同时注意传参顺序
update dome set name = #{param2},password = #{param3} where id = #{param1}
</update>
<select id="findAll" resultType="com.yt.pojo.Dome">
select * from dome
</select>
</mapper>>
注意:
Mapper.xml 若不在resources的子目录下
需要在pom.xml内添加以下配置(maven配置大于一切,maven默认只读resources下的文件)
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
Mapper.xml :
namespace 为接⼝的全类名。
statement 的 id 为接口中对应的方法名。
statement 的 parameterType 和接口中对应⽅法的参数类型⼀致。
statement 的 resultType 和接口中对应⽅法的返回值类型⼀致。
类型别名可为 Java 类型设置一个缩写名字。
它仅用于 XML 配置,意在降低冗余的全限定类名书写。 可在Mybatis 全局配置文件 config.xml 中配置进行如下配置:
<typeAliases>
<typeAlias alias="Dome" type="com.yt.pojo.Dome"/>
</typeAliases>
字符串 #{ }内使用param1,param2或arg0,arg1 同时注意传参顺序
3.在Mybatis的配置文件中注册Mapper
<mappers>
<mapper resource="Mapper/DomeMapper.xml"></mapper>
</mappers>
5.调用接⼝的代理对象完成操作
package com.yt.test;
import com.yt.mapper.DomeI;
import com.yt.pojo.Dome;
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;
public class DomeTest {
public static void main(String[] args) {
//通过Reader对象读取Mybatis映射⽂件
InputStream inputStream= DomeTest.class.getClassLoader().getResourceAsStream("config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
// 获取当前线程的SQLSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//通过SQLSession读取映射⽂件中的操作编号,从⽽读取SQL语句
DomeI domeI=sqlSession.getMapper(DomeI.class);
/* //向表中添加数据
Dome dome=new Dome("admin","123");
System.out.println(domeI.insertDome(dome));
sqlSession.commit();*/
/* //删除表中数据
System.out.println(domeI.deleteDome(1));
sqlSession.commit();*/
/* //修改表中数据
System.out.println(domeI.updateDome(1,"root","000"));
sqlSession.commit();*/
//查询表种数据
List<Dome> list=domeI.findAll();
for(Dome dome:list){
System.out.println(dome);
}
sqlSession.close();
}
}
会改变数据表内容的操作都要进行事务提交( sqlSession.commit() )
即增、删、改需要提交事务。
⭐完结
如果有问题或者有建议,评论区见!