mybatis基本配置流程,使用入门例子展示
参考文档:添加链接描述
项目文件列表:
需要加入的依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
需要在pom文件加入的资源文件:
主要作用是使的xml,properties等结尾的配置文件可以被maven编译,使得这些文件会被复制到target文件文件夹下
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
创建一个类用于接受数据库的每一条数据,类的属性需要和数据库的数据属性进行对应(Student.java):
package org.example.domain;
public class Student {
private Integer id;
private String name;
private String email;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
写一个接口(StudentDao.java):
package org.example.dao;
import org.example.domain.Student;
import java.util.List;
public interface StudentDao {
public List<Student> selectStudents();
}
sql的映射文件(StudentDao.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="org.example.dao.StudentDao">
<!--
namespace:这是名称空间,需要接口的全限定名称
id:执行的sql语句的唯一标识,一般要求与接口中的方法名称相同
resultType:表示查询得到的结果的类型,需要使用全限定名称,用对象来接受查询的数据
-->
<select id="selectStudents" resultType="org.example.domain.Student">
select id, name, email, age from student order by id
</select>
</mapper>
<!--
"http://mybatis.org/dtd/mybatis-3-mapper.dtd":这个表示的是约束文件,mapper标签中写下的语句,需要满足约束文件的要求
-->
数据库配置文件(mybatis.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>
<!--
configuration:根标签
default:必须和某个environment的id一样,表示告诉mybatis连接哪个数据库
-->
<environments default="mydev">
<!--
environments:环境配置标签
environment:一个数据库信息的配置
id:唯一值,自定义的,表示该数据库信息配置的名称
-->
<environment id="mydev">
<!--
transactionManager;mybatis的事务类型
type:表示JDBC
-->
<transactionManager type="JDBC"/>
<!--
dataSource:表示数据源
type:表示数据源的类型,POOLED表示数据库连接池
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="123456789qw"/>
</dataSource>
</environment>
</environments>
<!--指出sql映射文件的位置-->
<mappers>
<!--
一个mapper标签指定一个文件的位置
从类路径开始的路径信息。 target/classes (类路径) 找到sql语句 编译之后的
需要再pom文件中加入资源文件,将xml文件进行编译,否则StudentDao.xml文件无法被复制到target文件下
-->
<mapper resource="org/example/dao/StudentDao.xml"/>
</mappers>
</configuration>
写了一个类用于测试(Myapp.java):
package org.example;
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 org.example.domain.Student;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Myapp {
public static void main(String[] args) throws IOException {
//1.定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
String config="mybatis.xml";
//2.读取这个config表示的文件
InputStream in = Resources.getResourceAsStream(config);
//3.创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
//5.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
//6.指定要执行的sql语句的标识。 sql映射文件中的namespace + "." + 标签的id值
String sqlId = "org.example.dao.StudentDao" + "." + "selectStudents";
//7.执行sql语句,通过sqlId找到语句
List<Student> studentList = sqlSession.selectList(sqlId);
//8.输出结果,lamda表达式
studentList.forEach(student -> System.out.println(student));
//9.关闭sqlSession对象
sqlSession.close();
}
}