Mybatis学习之路(一)
一、Mybatis+Maven构建web项目
第一步
第二步:一路next。最后Finish
第三步:创建项目目录,也就是红框框里得
第四步:在pom.xml添加依赖
<dependencies>
<!-- ********************** Java Servlet API 4.0.0-b01 ********************** -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0-b01</version>
</dependency>
<!-- ********************** Mysql JDBC驱动 ********************** -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- ********************** Mybatis依赖 ********************** -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<!-- ********************** 测试 ********************** -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
第五步:在图中得位置新建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>
<settings>
<!--当返回行的所有列都是空时,MyBatis默认返回null-->
<setting name="returnInstanceForEmptyRow" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<!--使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域-->
<transactionManager type="JDBC"/>
<!--数据库相关参数,一定记得配置啊-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/app?serverTimezone=UTC&useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--添加一个*Mapper.xml就要添加一个配置,resource的路径取决于你*Mapper.xml的位置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"></mapper>
<mapper resource="mapper/testMapper.xml"></mapper>
</mappers>
</configuration>
二、数据库连接测试
这里介绍两种与数据库交互的代码编写方式。
方式一
1.在resources文件夹下新建一个 xxxMapper.xml文件
2.在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="test">
<!--id一定要写!!!!!resultType是返回值类型 -->
<select id="query" resultType="edu.app.bean.User">
select * from tb_user
</select>
</mapper>
3.在test目录下新建测试用例
public class daoTest {
@org.junit.Test
public void Test(){
//读配置文件
String resourse = "Mybatis-Config.xml";
InputStream inputStream =null;
try {
inputStream = Resources.getResourceAsStream(resourse);
} catch (IOException e) {
e.printStackTrace();
}
if(inputStream==null){
System.out.println("xml is null");
}
//新建sql工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
//执行查询,参数是你 上一步中新建的xml文件中的 "命名空间.sql语句id",
List<User> users=session.selectList("test.query");
System.out.println(users.size());
}
}
4.运行测试用例
方式二
此方法较与上一个方法要麻烦些,但个人觉的结构更清晰。
1.在Java源码目录下新建一个接口
2.写一个查询方法
package edu.app.mapper;
import edu.app.bean.User;
import java.util.List;
public interface test {
public List<User> query();
}
3.在resources文件夹下写一个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="edu.app.mapper.test">
<!--id必须与相应的方法名一致!!!!!-->
<select id="query" resultType="edu.app.bean.User">
select * from tb_user
</select>
</mapper>
4.编写测试用例
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @program: terminal
* @description:
* @author: dyq
* @create: 2020-03-19 21:30
**/
public class daoTest {
@org.junit.Test
public void Test(){
String resourse = "Mybatis-Config.xml";
InputStream inputStream =null;
try {
inputStream = Resources.getResourceAsStream(resourse);
} catch (IOException e) {
e.printStackTrace();
}
if(inputStream==null){
System.out.println("xml is null");
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
test t = session.getMapper(test.class);
List<User> users = t.query();
System.out.println(users.size());
}
}
5.运行