Mybatis实验一反思
配置步骤
- 首先我们需要在pom.xml导入相应的依赖,并且建立依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector- java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<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>
</build>
-
我们建立所要求的数据库
-
数据库连接池配置
<?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> <typeAliases> <package name="com.yang.pojo"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"/> <property name="username" value="root"/> <property name="password" value="zhang1989"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/yang/dao/OrderMapper.xml"/> </mappers> </configuration>
-
对应建立起相应的类
-
根据需求,写XxxMapper接口,写出方法
-
根据接口,写XxxMapper.xml配置文件,利用sql语句实现方法
-
数据库工具类MybatisUtil.class(以后都可以直接使用)
package com.yang.util; 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 MybatisUtil { private static SqlSessionFactory sqlSessionFactory; static { try { //获取sqlsessiofactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
-
写测试类
问题:
- 测试时找不到所建立的类
- 执行删除时不能根据id删除,报错
- Mybatis.config.xml忘记了对应的
<Mapper>
<mapper resource="com/yang/dao/OrderMapper.xml"/>
<Mapper>
解决方法:
-
在配置文件中向所在的com.yang.pojo包中设置了别名,即可执行
<typeAliases> <package name="com.yang.pojo"/> </typeAliases>
-
是因为order表主键id作为orderdetail表外键,不能直接删除,需要先删除orderdetail表信息,一次执行两个方法便可以执行删除指令。