学习目的:初步了解Mybatis,使用mybatis查询数据库中的数据。
Part 1
准备数据库:
create database vaefun_mybatis;
use vaefun_mabatis;
create table category_
(
id int auto_increment
primary key,
name varchar(32) null
)
engine = MyISAM
charset = utf8;
create table product_
(
id int auto_increment
primary key,
name varchar(32) charset utf8 null,
price float(10, 2) null
);
添加数据
INSERT INTO `vaefun_mybatis`.`product_`(`id`, `name`, `price`) VALUES (1, '戴尔7472', 5499.99);
INSERT INTO `vaefun_mybatis`.`product_`(`id`, `name`, `price`) VALUES (2, '华硕', 3499.99);
INSERT INTO vaefun_mybatis.category_ (id, name) VALUES (1, 'category1');
INSERT INTO vaefun_mybatis.category_ (id, name) VALUES (2, 'category2');
Part 2
创建Java项目:mybatis,并导入相应的jar包。
![v2-6475bca96963e66d5ed869c8e8109811_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/5faf2b37339dd552d3841e276d4bbb5a.jpeg)
Part 3
准备pojo,用于映射创建的表
Category
package cn.vaefun.pojo;
public class Category {
private int id;
private String name;
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;
}
}
Product
package cn.vaefun.pojo;
public class Product {
private int id;
private String name;
private float price;
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 float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
Part 4
配置pojo.xml:在cn.vaefun.pojo中新建pojo.xml。
namespace="cn.vaefun.pojo":表示命名空间为cn.vaefun.pojo。
select * from category_这条sql语句用id:listCategory进行标示以供后续代码调用。resultType="Category"表示返回的数据和Category关联起来,这里本应该使用的是com.how2java.pojo.Category, 但是因为上一步配置了别名,所以直接使用Category就行了。
<?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.vaefun.pojo">
<select id="listCategory" resultType="Category">
select * from category_
</select>
<select id="listProduct" resultType="Product">
select * from product_
</select>
</mapper>
Part 5
在src下新建mybatis-config.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>
<package name="cn.vaefun.pojo"/>
<!-- 扫描该包下的类
使得在后续配置文件pojo.xml中使用resultType的时候,可以直接使用Category,
而不必写全cn.vaefun.pojo.Category-->
</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/vaefun_mybatis?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/vaefun/pojo/pojo.xml"/>
<!-- 映射pojo.xml -->
</mappers>
</configuration>
Part 6
新建测试类:TestMybatis
根据mybatis-config.xml获取sqlSessionFactoy,然后获取sqlSession。
根据上文配置文件中的select id执行相对应的sql语句,并使用相应的对象集合接收查询到的数据对象,然后遍历集合,打印相应的属性。
package cn.vaefun.test;
import cn.vaefun.pojo.Category;
import cn.vaefun.pojo.Product;
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;
import java.util.List;
public class TestMybatis {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sqlSessionFactory.openSession();
List<Category> cs=session.selectList("listCategory");
for (Category c : cs) {
System.out.println(c.getName());
}
List<Product> products=session.selectList("listProduct");
for (Product p : products) {
System.out.println(p.getId());
System.out.println(p.getName());
System.out.println(p.getPrice());
}
}
}
Part 7
运行测试。
![v2-7d257e99e27dbd77f0b4b081af44501b_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/689c80971ecb5b8f80234f4f0cf812f1.png)
成功使用mybatis查询到数据库中的信息。