一、创建Maven项目
1、选择模板
2、maven项目构建完成
二、更改pom.xml文件
1、设置正确的JDK版本,我这里是1.8
2、删除build标签中的内容
3、加入Mybatis依赖和Mysql驱动(连接数据库使用)
4、加入指定文件插件(访问src资源目录下的文件使用)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.study</groupId>
<artifactId>ch02-mybatis-dao</artifactId>
<version>1.0-SNAPSHOT</version>
<name>ch02-mybatis-dao</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--mysql驱动-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
<build>
<!--指定文件插件-->
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties, .xml文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
三、创建表的实体类(Student.java)
1、定义表字段名称
2、重写get()和set()方法
3、重写toString()方法
package com.study.domain;
public class Student {
private Integer id;
private String namel;
private String Integer;
private Integer age;
public java.lang.Integer getId() {
return id;
}
public void setId(java.lang.Integer id) {
this.id = id;
}
public String getNamel() {
return namel;
}
public void setNamel(String namel) {
this.namel = namel;
}
public String getInteger() {
return Integer;
}
public void setInteger(String integer) {
Integer = integer;
}
public java.lang.Integer getAge() {
return age;
}
public void setAge(java.lang.Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", namel='" + namel + '\'' +
", Integer='" + Integer + '\'' +
", age=" + age +
'}';
}
}
四、创建接口(StudentDao.java)
package com.study.dao;
import com.study.domain.Student;
import java.util.List;
public interface StudentDao {
/**
* 查询表中所有记录
* @return
*/
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">
<!--首先解析namespace:命名空间,此属性通常用来映射Dao层接口-->
<mapper namespace="com.study.dao.StudentDao">
<!--id:对应Mapper层接口方法名,要执行的sql语法的唯一标识,Mybatis会使用这个id的值来找到要执行的sql语句
parameterType:执行输入参数类型
resultType:表示结果类型,是sql语句执行后得到ResultSet,遍历这个ResultSet得到java对象的类型。
值写的类型的全限定名称
-->
<select id="selectStudents" resultType="com.study.domain.Student">
select id,name,email,age from student order by id
</select>
</mapper>
六、创建Mybatis主配置文件(mybatis.xml)
1、在main目录下创建resources资源目录
2、在resource下创建主配置文件
此步骤可直接创建保存的代码模板,详情见
修改mapper映射文件和数据库配置信息
<?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>
<!--settings:控制mybatis全局性为-->
<settings>
<!--设置mybatis输出日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--环境配置:数据库的连接信息
default:必须和某个environment的id值一样。
告诉mybatis使用哪个数据库的连接信息。也就是访问哪个数据库
-->
<environments default="mydev">
<!--environment:一个数据库信息的配置,环境
id:一个唯一值,自定义,表示环境的名称。
-->
<environment id="mydev">
<!--transactionManager:mybatis事务类型
type:JDBC(表示使用jdbc中的Connection对象的commit。rollback做事务处理)
-->
<transactionManager type="JDBC"/>
<!--dateSource:表示数据源,连接数据库的
type:表示数据源的类型 POOLED表示使用连接池
-->
<dataSource type="POOLED">
<!--
driver,url username,password是固定的,不能自定义。
-->
<!--数据库的驱动类名-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--连接数据库的url字符串-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
<!--访问数据库的用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="053531"/>
</dataSource>
</environment>
</environments>
<!--sql mapper(sql映射文件)的位置-->
<mappers>
<!--一个mapper标签指定一个文件的位置。
从类路径开始的路径信息。 target/classes(类路径)
-->
<mapper resource="com/study/dao/StudentDao.xml"/>
</mappers>
</configuration>
七、在study目录下创建工具类(Utils.java)
package com.study.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.InputStream;
public class Utils {
private static SqlSessionFactory factory = null;
/**
* 静态框,只执行一次
*/
static {
String config = "mybatis.xml";
try {
InputStream in = Resources.getResourceAsStream(config);
//使用SqlSessionFactoryBuilder创建SqlSessionFactory对象
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession的方法
public static SqlSession getSqlSession() {
SqlSession sqlSession = null;
if (factory != null) {
//非自动提交事务
sqlSession = factory.openSession();
}
return sqlSession;
}
}
八、在dao目录下创建实现类(StudentDaoImpl.java)
1、StudentDaoImpl.java实现类使用Utils.java工具类中的getSqlSession()方法获取SqlSession对象
2、使用SqlSessin对象中的方法执行sql语句。
package com.study.dao.impl;
import com.study.dao.StudentDao;
import com.study.domain.Student;
import com.study.utils.Utils;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class StudentDaoImpl implements StudentDao {
@Override
public List<Student> selectStudents() {
//获取SqlSession对象
SqlSession sqlSession = Utils.getSqlSession();
String sqlId = "com.study.dao.StudentDao.selectStudents";
//执行sql语句,使用SqlSession类的方法
List<Student> students = sqlSession.selectList(sqlId);
//关闭
sqlSession.close();
return students;
}
}
九、创建测试类进行单元测试(test.java)
package com.study.test;
import com.study.dao.StudentDao;
import com.study.dao.impl.StudentDaoImpl;
import com.study.domain.Student;
import org.junit.Test;
import java.util.List;
public class test {
@Test
public void selectStudents() {
//使用StudentDaoImpl的实现类创建StudentDao的对象
StudentDao dao = new StudentDaoImpl();
//使用StudentDao对象的方法执行sql语句
List<Student> studentList = dao.selectStudents();
//循环遍历输出
for (Student stu : studentList) {
System.out.println(stu);
}
}
}