mybatis是持久层的,它内部封装了jdbc,使得开发者只用关注sql本身
本篇文章主要说明了快速入门的方法
相应项目家电数据管理
目录
一. 环境配置
1. 在我提供的项目中,导入这两个jar包,第一个是mybatis操作的jar包,第二个是数据库连接的架包
2. 导入好后,创建一个resources目录,在idea中将resources目录设置为资源目录
3. 在新创建的资源目录下,创建一个后缀名称为xml的mybatis配置文件,名称随意 mybatis-config.xml
- 写入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">
- 写入mybatis的配置
<configuration>
<!--配置环境命名随便 -->
<environments default="mysql">
<!--配置mysql环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/english"/>
<property name="username" value="root"/>
<property name="password" value="ludashen"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--预留区,一会回来配置映射文件-->
</mappers>
</configuration>
4. 可以在资源目录下,创建多一个文件夹,里边,放每一个种操作的配置文件
二. 搭建MySQL数据库
1. 创建家具表
CREATE TABLE `furniture` (
`furnitureId` int NOT NULL AUTO_INCREMENT,
`furnitureName` varchar(200) DEFAULT NULL,
`furnitureCount` int DEFAULT NULL,
`furnitureSellCount` int DEFAULT NULL,
`furniturePrice` int DEFAULT NULL,
`describes` text,
PRIMARY KEY (`furnitureId`)
)
2. 创建用户表
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`address` varchar(200) DEFAULT NULL,
`sex` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`)
)
3. 创建订单表
CREATE TABLE `other` (
`otherId` int NOT NULL AUTO_INCREMENT,
`otherCount` int NOT NULL DEFAULT '0',
`userId` int NOT NULL,
`furnitureId` int DEFAULT NULL,
PRIMARY KEY (`otherId`,`otherCount`),
KEY `fid` (`furnitureId`),
KEY `uid` (`userId`),
CONSTRAINT `fid` FOREIGN KEY (`furnitureId`) REFERENCES `furniture` (`furnitureId`),
CONSTRAINT `uid` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
)
三、实现Mybatis过程
1. 在src目录下创建自己域名的包目录,最后有dao包,写数据操作方法接口的,model包,写实体类的,server写接口实现类的
2. 在model包写,三个实体类,成员变量分别对于MySQL 中表格的每个字段
- 家电表
public class Furniture {
private int furnitureId;
private String furnitureName; // 家电名字
private int furnitureCount; // 家电总数量
private int furnitureSellCount; // 家电卖出数量
private int furniturePrice; //家电价格
private String describes; // 家电描述
}
- 用户表
public class User {
private int id; // 主键
private String name;
private String password;
private String phone;
private Boolean sex; // 0男, 1女
private String address; // 0男, 1
}
- 订单表
public class Other {
private int otherId;
private int otherCount;// 购买数量
private User userId;//购买用户Id
private Furniture furnitureId;// 购买物品IP
}
3. 接下来,为了是模块更加清晰,我们需要在资源目录下创建三个配置文件,这三个配置文件分别代码了,对数据库中,各自表的各种操作
接着创建3个相关接口,可以在接口前边加个I,方便区分,接口分别对应每个数据表的操作
4. 我举例furniture.xml文件的写法,其他类似;后边那两个可以自己举一反三进行模拟
- 写入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">
- 在约束头下边添加mapper标签,之后,数据库的所有SQL操作都需要写在mapper标签里边
- namespage的作用,主要是方便mybatis查找出相应的方法名称,并匹配相应的SQL语句,所有这里要指定对应的方法区即之前定义的接口
<mapper namespace="com.home.electric.dao.IFurniture">
<!--SQL语句等配置预留区域-->
</mapper>
5. 在第三点mybatis配置文件预留区域哪里添加,第九点的映射文件路径
<mappers>
<mapper resource="dao/user.xml"/>
</mappers>
6. 在server包写创建FurnitureServer 类继承 IFurniture接口
7. 实现查询全部内容方法,在IFurniture 接口中,定义 selectAll 方法,接着在实现类FurnitureServer 重写该方法
8. 接着可以在MySQL控制台或者其他软件上,写一个全部查询的SQL语句,如果能正确在SQL执行则可以复制过来了
SELECT * FROM `furniture`;
9. 之后在furniture.xml 中,上方第9点,SQL预留区,加入如下代码,完成查询操作
- 每一个标签名称,代表要在数据库中执行什么操作,如select,则是执行查询操作
- id代表着 mapper 标签作用域下,接口IFurniture里边的selectAll方法
- resultType 代表了 selectAll 方法的返回值,如果是List列表,则代表List列表里边的泛型
- 提示:这里的SQL语句结尾,可以加分号,也可以不加,但是如果用的一些分页插件的话,最好不加,不然分页插件会拼接数据库语句时会报错
<select id="selectAll" resultType="com.home.electric.model.Furniture">
SELECT * FROM `furniture`;
</select>
10. 到这里,可以实现一下,测试一下自己代码能不能查出数据了,先定义一个Utils 工具类,在里边写上一个静态的个对象共有的的方法,主要是负责,加载Mybatis的配置文件服务工厂的,之后的每个类都会通过它对数据库进行操作
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
public class Utils {
static SqlSessionFactory getSessionFactory() {
SqlSessionFactory sessionFactory = null;
try {
sessionFactory = new SqlSessionFactoryBuilder().build(Resources
.getResourceAsReader("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
return sessionFactory;
}
}
10. 最后在FurnitureServer类中,调用15的点的静态方法,实现出数据库的查询操作
import com.home.electric.dao.IFurniture;
import com.home.electric.model.Furniture;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class FurnitureServer {
private SqlSession sqlSession = Utils.getSessionFactory().openSession();
private IFurniture userMapper = sqlSession.getMapper(IFurniture.class);
public List<Furniture> selectAllFurniture(){
return userMapper.selectAll();
}
}
11. 可以通过main方法打印出来看看Mybatis帮我们封装的数据
项目源码:家电数据管理