1. 项目创建
1.1 创建动态页面
在Eclipse中创建Dynamic Web Project


这里后续没有使用的web.xml,可以不勾选
1.2 导入相关的jar包
在WEB-INF下的lib中导入Spring相关的jar包,这里使用到的包有两个:
mybatis.jar、mysql-connector-java.jar,其中的log4j是日志输出文件可选择导入

1.3 数据库创建
创建一个库名为exam的数据库,在里面创建一个名为student的表:
1 2 3 4 5 6
| CREATE TABLE `student` ( `id` int(11) NOT NULL, `Sname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `Sage` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
1.4 插入数据
1 2
| INSERT INTO `student` VALUES (1, '张三', '12'); INSERT INTO `student` VALUES (2, '李四', '19');
|
2. 项目配置
2.1 mybatis.xml
在src目录下创建mybatis.xml配置数据库链接包扫描等等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <?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> <properties resource="db.properties"/> <settings> <setting name="logImpl" value="log4j"/> </settings> <typeAliases> <package name="pojo"/> </typeAliases> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </dataSource> </environment> </environments> <mappers> <package name="dao"></package> </mappers> </configuration>
|
2.2 db.properties
在src目录下创建db.properties文件存放sql账号密码
1 2 3 4
| mysql.driver=com.mysql.cj.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/exam?useSSL=false&serverTimezone=UTC mysql.username=root mysql.password=123456
|
*2.3 log4j.properties
在src目录下创建log4j.properties文件存放日志配置文件,如果这步骤不选择,在2.1中将log4j的扫描项删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| log4j.rootLogger=debug, stdout,logfile
log4j.logger.mapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=log/File_log.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n
|
3. 项目编写
3.1 实体类(pojo)
在src中创建子文件夹pojo,在pojo中创建student.java实体类
1 2 3 4 5 6
| public class student { private int id; private String Sname; private String Sage;
}
|
3.2 数据持久层(dao)
在src中创建子文件夹dao,在dap中创建studentMapper.java持久类
1 2 3 4
| public interface studentMapper { @Select("select * from student where id = #{id}") public student findbyid(int id); }
|
3.3 初始化数据工厂
在src中创建子文件夹utils,在utils中创建MybattisUtils.java工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package 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.InputStream;
public class MybattisUtils { static SqlSessionFactory sqlSessionFactory=null; static{ try { InputStream in = Resources.getResourceAsStream("mybatis.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); }catch(Exception e){ e.printStackTrace(); } } public static SqlSession getSession(){ return sqlSessionFactory.openSession(); } }
|
4. 项目测试
4.1 测试类
在src中创建子文件夹test,在test中创建studenttest.java测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package test;
import org.apache.ibatis.session.SqlSession; import org.junit.Test;
import dao.studentMapper; import pojo.student; import utils.MybattisUtils;
public class studenttest {
@Test public void findtest() { SqlSession sqlSession = MybattisUtils.getSession(); studentMapper sm = sqlSession.getMapper(studentMapper.class); student s = sm.findbyid(1); System.out.println(s); } }
|
4.2 测试截图

5. 项目报错解决
5.1 Junit测试

提示信息显示Junit测试包不存在,但是可能会有手动在lib中添加Junit包的情况出现这个报错:

但是我们发现手动添加的和框架添加的会有不同,框架自动添加的会在项目目录中出现如下:

只有在项目目录中出现这个库的时候我们才能后正常的执行测试,这里就需要自己在项目中手动的添加这个依赖框架:

右键项目选择Properties,按照图中手动添加测试框架:

这样在项目中就会出现Junit测试框架并且可以正常的运行测试类。
5.2 对象无法映射

没有对象结果输出,通过了解左侧的报错得知,查询到的结果没有结果映射。
这个错误信息表明在尝试从数据库查询数据并将其映射到pojo.student类时,MyBatis找不到与[java.lang.Integer, java.lang.String, java.lang.String]参数匹配的构造函数。这里查看发现是在实体类中没有编写空参构造器,这样导致student对象无法创建,解决办法在其中添加上空参构造器就可以解决。