MyBatis程序创建
首先我们了解MyBatis的作用,其主要的作用是进行对数据进行连接,并且简化掉JDBC的连接操作,从而使开发人员可以专注于在Sql语句的编写,而不是需要分散注意力于在与数据库的连接,和使用PreparedStatement上。
修改pom.xml文件
在新建工程后,我们进入工程,然后删除所持有的src文件夹。然后我们需要开始进行对pom.xml配置文件的新增。这样我们以后在此工程中新建模块后我们都会得到当前pom.xml的文件,而不需要在此在新模块中再次修改在模块中的pom.xml的文件配置。
在修改pom.xml文件之前,我们需要首先明白我们在学习MyBatis之前所需要的的.JAR包。我们通过maven来进行对包的导入。
- mybatis
- mysql
- junit
并且由于Maven自身,我们需要进行对文件的过滤,及在依赖项下面补充
<groupId>com.YUME</groupId>
<artifactId>MyBatisStudy</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>MyBatisStudy-01</module>
</modules>
<properties>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
</properties>
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!--myBaits-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resource</directory>
<includes>
<include>**/*.properties</include>
<include>**/**/**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
创建mybatis-config.xml资源文件
此资源文件的文档可以在MyBatis的官方项目文档中找到模板,我们需要进行修改。注意在url的value值的设定中,我们需要进行对数据库的时区的设置,并且在此文件的url值中,我们所使用的并不是&来进行连接各个参数的设置。
<?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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&serverTime=Asia/shanghai"/>
<property name="username" value="usename"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/YUME/dao/BirdMapper.xml"/>
</mappers>
</configuration>
创建MyBatisUtils包
使用了工厂模式,我们需要设置我们在上一步所设置的xml文件路径,使用数据流进行导入,然后创建一个新的工厂。
sqlSessionFactory.openSession();来进行对SqlSession对象的创建。
package com.YUME.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 MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String res = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(res);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
创建pojo类
创建一个JavaBean类,来对应我们的数据库。
package com.YUME.pojo;
public class Bird {
private String name;
private int age;
public Bird(){}
public Bird(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建Mapper接口
我们在接口中创建我们所需要使用的方法。
package com.YUME.dao;
import com.YUME.pojo.Bird;
import java.util.List;
public interface BirdMapper {
List<Bird> getBird();
}
创建Mapper.xml文件
我们在xml文件中进行对在接口中声明的方法进行实现, namespace为我们所实现的接口的路径,id即是所实现的方法名,resultType即是返回的类型。
<?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="com.YUME.dao.BirdMapper">
<select id="getBird" resultType="com.YUME.pojo.Bird">
select * from bird
</select>
</mapper>
进行测试
我们首先需要进行对SqlSession类的获取,由于我们之前已经书写过获取SqlSession对象的Util包,我们直接调用即可获取。
我们一共有两种的获取Mapper接口的方法,一种是通过SqlSession对象来进行获取Mapper类,另一种即是通过selectList来获取,但是这种方法是在以前使用的,并不推荐使用。
在获取这个Mapper接口后,我们及可以进行对其进行使用方法。
package com.YUME.dao;
import com.YUME.pojo.Bird;
import com.YUME.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.*;
import java.util.List;
public class TestBirdMapper {
@Test
public void testGetBird(){
SqlSession sqlSession = null;
try {
//获得SqlSession对象
sqlSession = MyBatisUtils.getSqlSession();
//获得Mapper
BirdMapper birdMapper = sqlSession.getMapper(BirdMapper.class);
List<Bird> birds = birdMapper.getBird();
//方法二: 不推荐
//List<Bird> birds = sqlSession.selectList("com.YUME.dao.BirdMapper.getBird");
for (Bird bird : birds) {
System.out.print(bird.getName()+" ");
System.out.println(bird.getAge());
}
}catch (Exception e){
e.printStackTrace();
}finally {
sqlSession.close();
}
}
}