Mybatis入门笔记--简单例子

时间:2021-05-16 05:11:38

Mybatis的效率和灵活性会在Hibernate之上。
和Hibernate相比较而言,Mybatis更为轻量级,更为易学理解。
不过,它需要我们手工编写sql语句,不像Hibernate那样可以实现sql的自动生成和执行。

订单Order的查询

1. Order.java创建

package domain;

/**
* Created by laiwenqiang on 2017/5/8.
*/

public class Order {
private String id;
private String userId;
private Double money;
private String receiverAddress;
private String receiverName;
private String receiverPhone;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getUserId() {
return userId;
}

public void setUserId(String userId) {
this.userId = userId;
}

public Double getMoney() {
return money;
}

public void setMoney(Double money) {
this.money = money;
}

public String getreceiverAddress() {
return receiverAddress;
}

public void setreceiverAddress(String receiverAddress) {
this.receiverAddress = receiverAddress;
}

public String getreceiverName() {
return receiverName;
}

public void setreceiverName(String receiverName) {
this.receiverName = receiverName;
}

public String getreceiverPhone() {
return receiverPhone;
}

public void setreceiverPhone(String receiverPhone) {
this.receiverPhone = receiverPhone;
}

@Override
public String toString() {
return "Order{" +
"id=" + id +
", userId='" + userId + '\'' +
", money=" + money +
", receiverAddress='" + receiverAddress + '\'' +
", receiverName='" + receiverName + '\'' +
", receiverPhone='" + receiverPhone + '\'' +
'}';
}
}

2. orders数据表的创建

这个就不在赘述了。

CREATE TABLE `user` (
`id` int(11) DEFAULT NULL,
`name` varchar(12) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

3. 对Orders表进行操作的order.xml配置文件

这里主要的工作就是编写sql查询。

<?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">


<mapper namespace="domain.Order">
<select id="selectOrder" parameterType="String" resultType="domain.Order">
select * from orders where id = #{id}
</select>
</mapper>

4.configuration.xml配置文件创建

这个配置文件只有一个,主要作用是用于连接数据库和引入上面的order.xml配置信息。

<?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>
<typeAlias alias="User" type="domain.User"/>
</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/test?useUnicode=true&amp;characterEncoding=UTF-8"/>
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="domain/order.xml" />
</mappers>
</configuration>

5. Test测试类

import domain.Order;
import domain.User;
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;

/**
* Created by laiwenqiang on 2017/5/8.
*/

public class Test {
public static void main(String[] args) throws IOException {
String resource = "configuration.xml";
InputStream stream = Resources.getResourceAsStream(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(stream);
SqlSession session = ssf.openSession();

try {

Order order = session.selectOne("domain.Order.selectOrder", "0001");
System.out.println(order);

} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}

}
}