文章目录
前言
对于java开发者来说,数据库操作显得格外的重要,相比较用JDBC操作数据库来说,Mybatis无疑是比较容易上手而且好用的工具
我将用显现易懂而且比较详细的方式来记录一些基础的操作
一、Mybatis是什么?
Mybatis是ORM面向持久化层(数据库访问层)的框架,主要用来操作数据库,编写SQL语言(动态SQL),大大的简化了使用逻辑语句编写SQL的代码冗余和复杂性。现在开始出发吧~~~
二、使用步骤
1.创建一个java工程,导入 Mybatis相应的jar包
将配置文件和类表对应的实体类创建好,并提供getter和setter方法,toString 方法
// 我这里主表为 user
public class User{
private Integer id;
private String name;
private Integer age;
private List<Order> order; // 这里将附表的实体类 作为主表的实体类的实例变量
public User() {
super();
}
public List<Order> getOrder() {
return order;
}
public void setOrder(List<Order> order) {
this.order = order;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", order=" + order + "]";
}
// 这里是附表
public class Order{
private Integer id;
private String store;
private String price;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStore() {
return store;
}
public void setStore(String store) {
this.store = store;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public String toString() {
return "store=" + store + ", price=" + price + "";
}
2.创建一个UserMapper接口类,并提供查询方法
代码如下):
import java.util.List;
import cn.itsource.domain.User;
import cn.itsource.query.EmpQuery;
public interface UserMapper {
List<User> findAll();
}
3.配置UserMapper.xml文件
关于resultMap:
id ? 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能
result ? 注入到字段或JavaBean 属性的普通结果
association ? 一个复杂的类型关联;许多结果将包成这种类型
嵌入结果映射 ? 结果映射自身的关联,或者参考一个
collection ? 复杂类型的集
property ?属性名
colum ? 数据库表对应的字段名
<?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="cn.tisource.mapper.UserMapper">
<select id="findAll" resultMap="findUserOrder">
select * from user u left join `order` o on u.id=o.id
</select>
<resultMap type="User" id="findUserOrder">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<collection property="order" column="id" ofType="Order">
<!-- <id property="id" column="id" /> -->
<result property="store" column="store" />
<result property="price" column="price" />
</collection>
</resultMap>
</mapper>
4.创建测试类测试
mport static org.junit.Assert.*;
import java.util.List;
import javax.management.Query;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import cn.itsource.domain.User;
import cn.itsource.mapper.UserMapper;
import cn.itsource.util.MybatisUtil;
public class TestQuery {
@Test
public void test() {
SqlSession session = MybatisUtil.getSqlSession(); // 获取会话,这里是我的一个工具类,需要可以私我
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> findAll = mapper.findAll();
for (User user : findAll) {
System.out.println(user);
}
}
}
打印结果
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了多表查询的使用,而Mybatis高级查询提供了大量能使我们快速便捷地查询数据的方法。完整参考官网:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps