您的位置:首页 > 其它

上手Mybatis,最基本基于xml配置使用示例

2016-07-20 17:01 387 查看
最近由于项目需要ssm框架来做,对于以前只使用过hibernate的我来说是一个不好的消息,于是只好在网上学习一下mybatis的使用方法,但大多都是和spring整合起来使用的,配置也是错综复杂,几经对比,自己摸索出了mybatis的基本使用方法,并做了一个小demo来测试一下。

Mybatis也是面向接口的,此文主要介绍基本的基于xml配置的使用,并未使用接口。

最终目录如图所示(dao暂未使用)



一、测试需要的jar包

1、mysql数据库包

2、mybatis包

二、在数据库中建立对应的数据库mybatis,并创建对应的表和字段

建库:

CREATE DATABASE `Mybatis`CHARACTER SET utf8;

建表:

CREATE TABLE `mybatis`.`learner`( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20), `status`  VARCHAR(20), PRIMARY KEY (`id`) );

插入数据:

INSERT INTO `mybatis`.`learner` (`name`, `status`) VALUES ('严飞', '9');

INSERT INTO `mybatis`.`learner` (`name`, `status`) VALUES ('林寻', '8');

二、实体类,简单的几个字段,对应表中的几个字段

com.ghill.model.Learner.java

package com.ghill.model;

public class Learner {

private int id;
private String name;
private String status;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}


三、Mybatis.xml的配置


Mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

<span style="color:#FF0000;"><!-- !imprtant 注意标签的书写顺序 --></span>

<!-- 设置类的别名,在此处配置的类的缩写,在mapper配置中可以直接应用,若不配置则需要在mapper中写类的全路径 -->
<typeAliases>
<typeAlias type="com.ghill.model.Learner" alias="Learner" />
</typeAliases>

<!-- 配置数据库连接的环境,整合到spring中后可在properties文件中配置并通过spring管理 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>

<!-- 配置mapper文件,同样,整合spring后可由spring管理 -->
<mappers>
<mapper resource="LearnerMapper.xml" />
</mappers>

</configuration>




四、mapper文件的配置

LearnerMapper.xml

<?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">
<!-- 此处namespace配置为该mapper的<span style="color:#FF0000;">唯一标识</span>在,随后的测试代码中session.selectOne(String <span style="color:#FF0000;">statement</span>,Object parameter)
中的<span style="color:#FF0000;">statement</span>对应该处的namespace.下方的id-->
<mapper namespace="LearnerMapper">
<!-- select标签标示一条基本的select语句,当然还有insert,update,delete
id:改select标签的id标识;
parameterType:传入该语句的参数类型;
resultType:该条sql语句返回值类型(此处Learner是由于之前配置了缩写才可直接使用);
-->
<select id="getLearnerById" parameterType="int" resultType="Learner">
select * from learner where id = #{id};
</select>
</mapper>


五、测试类:

com.ghill.test.Test.java

package com.ghill.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.ghill.model.Learner;

public class Test {
public static void main(String[] args) {
Reader reader = null;
try {
//我的mybatis.xml放在了src目录下
//reader = new BufferedReader(new FileReader(new File("src/Mybatis.xml")));
reader = Resources.getResourceAsReader("Mybatis.xml");
} catch (Exception e) {
e.printStackTrace();
}
//通过builder建立一个工厂并打开一个session,类似hibernate
SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession();
//selectOne方法第一个参数字符串是LearnerMapper.xml中的namespace和Id组合
Learner learner = session.selectOne("LearnerMapper.getLearnerById", 3);
System.out.println(learner.getName());
}

}


mybatis相比于hibernate更灵活,对于sql语句的调优更加方便,但是sql都需要自己写,需要配置的东西也比较多。但由于sql语句基本写好,当更换数据库时sql语句也需要更改,hibernate则可以解决这个问题。

所以两者到底谁更好,还是见仁见智吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis