简介
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
执行流程
- 读取mybatis配置文件
- 加载映射文件mapper.xml
- 定义sql语句
- 创建会话工厂SqlSessionFactory
- 创建会话SqlSession
- 通过Executor执行器
- 输入参数和输出结果
快速上手(提前准备数据库测试表)
首先导入mybatis和mysql-connector的依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency>
在resources下面新建mybatis.xml配置文件:
如果新建没有mybatis的配置文件,只需直接创建一个xml文件,再将下方XML声明和文档类型定义(DTD)部分复制上:
<?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"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
根据要操作的表创建一个实体类:
public class Login {
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Login(String username, String password) {
this.username = username;
this.password = password;
}
public Login() {
}
}
接下来编写sql映射文件,创建一个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配置文件添加到mybatis主配置文件中:
<mappers>
<mapper resource="userMapper.xml"></mapper>
</mappers>
最后编写测试类:
import com.cc.bean.Login;
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;
public class Main {
public static void main(String[] args) throws IOException {
//加载mybatis主配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
//创建SqlSessionFactory工厂对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获取sqlsession对象
SqlSession sqlSession = build.openSession();
List<Login> s = sqlSession.selectList("getUser");
for(Login l :s){
System.out.print(l.getUsername()+" :");
System.out.println(l.getPassword());
}
}
}