项目目录如上所示。
图3:这个是myBatisconfig.xml的配置,在这里定义了两个别名,Student和Teacher会在StudentMapper.xml中用到。中间是JDBC的配置,下面是mapper映射配置,StudentMapper.xml配置包含了下面两幅图的内容,只是部分的。
图1 result 里面的property属性对应的是实体类的set属性,column对应的是数据库结果集字段。这里用到了association联合查询。结果集是teacherMap,property="teacher",对应在student类中需要维护一个teacher对象,并提供get,set
图2 这里解释下parameterType的意思,是解释的参数类型。可以是Object,也可以是基本数据类型。一些复杂的数据类型在这里就不说了。返回值类型:如果没有返回值,可以不写。有返回值,有两种,1:resultType:实际的类型,如整型:java.lang.Integer,字符串型:java.lang.String,或者是实体类,要包含全路径名,第二种是resultMap:在这里引用了studentResultMap,图1中定义的resultMap。
虽然一直在用mybatis,但是都是些比较简单的。没有深入的去了解,里面好多东西都不太知道他们的意思。今天就对他的一些东西做些了解。
package com.demo;
import java.io.InputStream;
import java.io.Reader;
import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import com.abc.entity.Student;
public class Test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
private static String resources="resources/myBatisconfig.xml"; //这个是要读取的mybatis配置文件
static {
try {
//通过SqlSessionFactoryBuilder里面有多个方法得到SqlSessionFactory
//得到的这个SqlSessionFactory其实是new DefaultSqlSessionFactory(config);
reader = Resources.getResourceAsReader(resources);
//sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 这里builder的build方法是源码自带的,实际和下面的方法调用一样(源码中也是这么调用的)
sqlSessionFactory = build(Resources.getResourceAsStream(resources)); //这个是本地的方法,其实和源码是一样的
} catch (Exception e) {
}
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();//得到一个SqlSession
try {
Student student = (Student) session.selectOne("com.abc.service.StudentService.queryById", 130); //这里的查询语句对应的是图1和图2,在图2中实际的sql语句是注释里面的语句,没有注释的是联合查询的语句。
System.out.println(student.getName());
} finally {
session.close();
}
}
public static SqlSessionFactory build(InputStream inputStream){
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, null, null);
return build(parser.parse());
}
public static SqlSessionFactory build(Configuration config) {
return new DefaultSqlSessionFactory(config);
}
}
这个类要完成的工作是1:通过Resources加载mybatis的xml配置文件得到一个Reader或者是Stream。
2:SqlSessionFactoryBuilder.build(..)方法得到SqlSessionFactory,他返回的是DefaultSqlSessionFactory,他的构造函数需要Configuration参数,这个参数在 parser.parse()得到了。
相关推荐
mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis...
springboot-mybatis项目练习
Mybatis小练习,有文档,可以更好的学习MyBatis
mybatis项目练习及流程文档
mybatis测试项目, 里面常见的增删改查, 包括级联查询都有例子. 版本是v3.2.2 不知道为啥这个所需积分竟然逐步增长了,。。。
mybatis框架练习,适合初学者练习学习和参考。。
mybatis3--1.入门小练习
mybatis练习,
MyBatis 案例练习 SQL
Spring_mybatis的小整合练习,可以测试着在线学习一下!
mybatis 练习源码(供自己练习使用)并非原创,供学习使用
快速入门、日志、雪花算法、主键自增、自动填充、乐观锁、逻辑删除、条件构造器、通用枚举、常规CRUD操作等
Mybatis 最小依赖jar 不集成spring 联系版本,适合初学者自己写个小demo
1.自己用来练习的Mybatis小练习例子,配置我的有篇博客可以一同练习,适合新手练习。 2.比较基础,就是一步一步的搭建,没有什么高深的技术,我觉得开始学就是要自己一步一步搭建,熟悉再熟悉。
想要源码的伙伴们,来下载吧
mybatis课件和练习代码
mybatis-plus 对mbatis升级版本。引入它不会对现有工程产生影响,如丝般顺滑,只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。代码生成、分页、性能分析等功能一应俱全
这是一个小型的项目,关于spring和mybatis整合的小项目,直接可运行,无错误
mybatis源码:源代码,含少量注释+练习代码:使用练习,Maven,log4j2,插件+手写练习:自己手写mybatis简化版