初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情。
一、建表
create tableCategory (
IdINT not null,
Namevarchar(80) null,constraint pk_category primary key(Id)
);
插入测试数据
INSERT INTO category VALUES (1,'Fish');INSERT INTO category VALUES (2,'Dogs');INSERT INTO category VALUES (3,'Birds');
二、新建测试项目
新建Maven项目,最终的项目结构如下:
修改pom.xml,引入mybatis相关依赖。
org.mybatis
mybatis
3.4.1
org.mybatis.generator
mybatis-generator-core
1.3.2
junit
junit
4.12
test
mysql
mysql-connector-java
5.1.21
runtime
三、建立pojo
建立Category对应的实体,这里为了方便测试重写了toString()方法。
public class Category implementsSerializable {private intid;privateString name;private static final long serialVersionUID = 1L;public intgetId() {returnid;
}public void setId(intid) {this.id=id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name = name == null ? null: name.trim();
}
@OverridepublicString toString() {
StringBuilder sb= newStringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", name=").append(name);
sb.append("]");returnsb.toString();
}
}
四、定义数据访问接口
在src/main/cathy.mybatis/mapper包,新增CategoryMapper接口,这里只定义GetById方法。
public interfaceCategoryMapper {public Category GetById(intid);
}
五、配置mybatis xml文件
1.mybatis的配置都基于XML文件,我们放在resources/config/mybatis-config.xml
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
typeAliases: 类型别名是为 Java 类型设置一个短的名字,用来减少类完全限定名的冗余。
dataSource:使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
mappers:用来定义SQL映射语句
六、SqlSession工具类
构建SqlSession有多种方式,这里我们先从mybatis-config.xml配置文件构建SqlSessionFactory,然后从SqlSessionFactory获取SqlSession。
public staticSqlSession getSqlSession() {
SqlSession session= null;try{
InputStream stream=Resources.getResourceAsStream(CONFIG_PATH);
SqlSessionFactory factory= newSqlSessionFactoryBuilder()
.build(stream);
session=factory.openSession();
}catch(Exception e) {
e.printStackTrace();
}returnsession;
}
七、调用:
public static voidmain(String[] args) {
SqlSession sqlSession=MybatisUtils.getSqlSession();try{
CategoryMapper categoryMapper=sqlSession.getMapper(CategoryMapper.class);
Category category=categoryMapper.GetById(1);if(category==null){
System.out.println("该分类不存在");
}else{
System.out.println(category.toString());
}
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
MybatisUtils.closeSession(sqlSession);
}
}
运行结果:Category [Hash = 731395981, id=1, name=Fish]
源码地址:https://pan.baidu.com/s/1kUKXnMn