MyBatis入门目录
前提
1、了解数据库、JDBC、maven等基础知识。
2、本文用idea,maven来说明。
一、MyBatis简介
1、官方简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、特点
(1)简单易学
(2)接除sql语句与编程代码的糅合
(3)简洁
3、使用方法
1、从SqlSessionFactoryBuilder类、xml文件中构建SqlSessionFactory类。
(SqlSessionFactory可以理解为连接数据库的连接池)
2、每次操作,在这个SqlSessionFactory中可以得到SqlSession,用于进行业务处理。(例如,查询、修改数据库内容等)
二、使用mybatis对数据库增删改查
1、环境配置
(1)创建maven项目
在pom.xml中最好加上如下配置,防止资源无法导出。
<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>
(2)导入包
- mybatis包,地址:https://mvnrepository.com/artifact/org.mybatis/mybatis
- mysql-connector包,地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
- junit包,用于测试。地址:https://mvnrepository.com/artifact/junit/junit
2、第一个mybatis程序(查询)
(1)编写xml配置文件
- 在resources下创建mybatis-config.xml文件,如图
- 编写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>
<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/project01?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
(2)编写工具类(建造SqlSessionFactory,获取SqlSession)
- 创建mybatisUtil类
package util;
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;
public class mybatisUtil {
public static SqlSessionFactory sqlSessionFactory = null;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//建造sqlsession工厂
}catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(); //获取SqlSession的方法
}
}
(3)编写实体类(pojo)
- 根据自己的数据库编写对应的实体类
package pojo;
public class users {
private int id;
private String username;
private String password;
private String email;
public users(){
}
public users(int id, String username, String password, String email) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
(4)编写接口、实现接口xml文件
- 接口和xml文件最好放在同一个包下并且同名
- 实体类接口,查询
package dao_mapper;
import pojo.users;
import java.util.List;
public interface usersMapper {
List<users> getUsersList();
}
- 实现接口的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="dao_mapper.usersMapper">
<select id="getUsersList" resultType="pojo.users">
select * from users;
</select>
</mapper>
(5)在总xml配置文件中注册刚刚写的小xml文件
- 打开mybatis-config.xml
- 加上如下代码
<mappers>
<mapper resource="dao_mapper/usersMapper.xml"/>
</mappers>
(6)测试
- 创建测试类
import dao_mapper.usersMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.users;
import util.mybatisUtil;
import java.util.List;
public class test {
@Test
public void test() {
SqlSession sqlSession = mybatisUtil.getSqlSession();
usersMapper mapper = sqlSession.getMapper(usersMapper.class);
List<users> usersList = mapper.getUsersList();
for (users users : usersList) {
System.out.println(users.getUsername());
}
sqlSession.close();
}
}
- 输出结果
3、增删改的写法
- 类似上面查询写法,只需要写接口和xml文件就可以了。
- 多了一个就是传参数问题。
- 使用实体类传参
- 使用map传参
parameterType为设置传进来的参数类型,如下图,pojo.users表示传进来的参数为pojo包下的users类,即我写的实体类
那么,如何取出参数呢,使用#{},可以直接取出实体类中的字段的值。
--------增-------
<insert id="addUser" parameterType="pojo.users">
insert into users(username,password,email) values(#{username},#{password},#{email})
</insert>
--------删-------
<delete id="deleteUser" parameterType="String">
delete from users where email=#{email}
</delete>
--------改-------
<update id="updateUser" parameterType="pojo.users">
update users set username=#{username},password=#{password} where email=#{email}
</update>
- 增删改查完整的xml文件