夜光序言:
爱情里,只有被深爱的一方,才有资格任意妄为
正文:MyBatis
我们看一下:开源免费框架
作用:数据访问层框架
底层是对jdbc的封装
我们肯定第一步要先导入jar包嗯
这是一个动态代理的jar包
第一个xml文件
/mybatis01/src/mybatis.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>
<!-- 夜光:default与所使用环境相对应 -->
<environments default="default">
<environment id="default">
<!-- 使用原生JDBC -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="1111"/>
</dataSource>
</environment>
<!-- 夜光:上面这个连接mysql -->
</environments>
<mappers>
<mapper resource="com/Genius/mapper/FlowerMapper.xml"/>
</mappers>
</configuration>
第二个xml文件
/mybatis01/src/com/Genius/mapper/FlowerMapper.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 namespace="a.b">
<!-- 夜光:id我们称为方法名
parameterType:定义参数类型
resultType:返回值类型
如果方法返回值是list,那么resultType就应该写list的范型
因为mybatis对jdbc封装,是一行一行读取数据的~~
-->
<select id="selAll" resultType="com.Genius.pojo.Flower">
select * from flower
</select>
</mapper>
第一个实体类:
/mybatis01/src/com/Genius/pojo/Flower.java
package com.Genius.pojo;
public class Flower {
//夜光:一般情况下,实体类都是和表名相同~~
private int id;
private String name;
private double price;
private String production;
//我们形成一个filed领域~~
public Flower(int id, String name, double price, String production) {
super();
this.id = id;
this.name = name;
this.price = price;
this.production = production;
}
//我们获取一下set和get方法
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getProduction() {
return production;
}
public void setProduction(String production) {
this.production = production;
}
@Override
public String toString() {
return "Flower [id=" + id + ", name=" + name + ", price=" + price + ", production=" + production + "]";
}
}
第二个测试类:
/mybatis01/src/com/Genius/test/Test.java
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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 com.Genius.pojo.Flower;
public class Test {
private static void main(String[] args) throws IOException{
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//夜光:使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
List<Flower> list = session.selectList("a.b.selAll");
for(Flower flower : list){
System.out.println(flower.toString());
}
session.close();
}
}
环境搭建~~
夜光、之后就是高级知识部分
订单商品数据模型分析
高级结果集映射(一对一,一对多,多对多)
Mybatis延迟加载
Mybatis查询缓存(一级缓存,二级缓存)
Mybatis和spring进行整合
Mybatis逆向工程