mybatis浅析
一.官方定义
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
1.用简单话来说,
mybatis只专注与数据访问层,就类似于jdbc连接数据库中的prepareStatement一样,而它是则通过配置来获取sqlSession来调用方法。
下面给大家演示一下
1.创建java项目
2.创建存放jar包的文件夹(Folder),lib(通常都是用lib来命名),在lib导入jar包,然后加奶瓶(build Path)
加奶瓶之后
3.创建包并且创建实体类且封装属性
package com.pojo;
import java.util.Date;
public class Emp {
private int empid;
private String empname;
private String empsex;
private double salary;
private Date intime;
public int getEmpid() {return empid;}
public void setEmpid(int empid) {this.empid = empid;}
public String getEmpname() {return empname;}
public void setEmpname(String empname) {this.empname = empname;}
public String getEmpsex() {return empsex;}
public void setEmpsex(String empsex) {this.empsex = empsex;}
public double getSalary() {return salary;}
public void setSalary(double salary) {this.salary = salary;}
public Date getIntime() {return intime;}
public void setIntime(Date intime) {this.intime = intime;}
@Override
public String toString() {
return "Emp [empid=" + empid + ", empname=" + empname + ", empsex=" + empsex + ", salary=" + salary
+ ", intime=" + intime + "]";
}
}
4.创建原包config(Source Folder),在原包创建Mybatis-config.xml核心配置文件
4.1 打开mybatis文档 :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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
4.2 接着创建db.properties文件配置数据库的驱动,url,以及账号密码
driver=com.mysql.cj,jdbc.Driver
url=jdbc:mysql://localhost:3306/homework?useSSL=false&characterEncoding=utf-8&serverTimezone=UTC
username=root
password=root
- 接着在config里面创建一个映射包mapper并且里面创建一个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 namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
namespace改成自己的xml文件路径,(现在可随意,最好这样定义方便之后来用接口实现)如下:
<mapper namespace="com.mapper.EmpMapper">
resultType 是返回的结果类型,用实体类来接收 没有配置别名的话就要加上包名,
<?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="com.mapper.EmpMapper">
<select id="selectAll" resultType="com.pojo.Emp">
select * from emp
</select>
</mapper>
配置别名代码如下(放在核心配置里)
<typeAliases>
<package name="domain.blog"/>
</typeAliases>
用Map来接收就没那么多事了,直接写个map 就可以。
6.创建测试包且创建测试类,测试代码如下:
package com.test;
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.pojo.Emp;
public class myTest {
public static void main(String[] args) throws IOException {
InputStream inputStream = Resources.getResourceAsStream("Mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
List<Emp> list = session.selectList("com.mapper.EmpMapper.selectAll");
System.out.println(list);
sessionFactory.openSession().close();
}
}
三行核心代码非常好理解
InputStream inputStream = Resources.getResourceAsStream(“Mybatis-config.xml”);
创建一个流来读取我们的mybatis核心配置文件,你可以把它理解成在读一个工厂建筑图;
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
new一个建筑工人,并且调用它的方法让他按照工厂建筑图来建造工厂 ;
SqlSession session = sessionFactory.openSession();
工厂建造完成后打开大门搞生产,而生产的东西就是SqlSession;
SqlSession出厂后就自带增删改查的方法,看字面单词意思也可理解
d(inputStream);
new一个建筑工人,并且调用它的方法让他按照工厂建筑图来建造工厂 ;
SqlSession session = sessionFactory.openSession();
工厂建造完成后打开大门搞生产,而生产的东西就是SqlSession;
SqlSession出厂后就自带增删改查的方法,看字面单词意思也可理解
小弟初来乍到,有不对的地方请大佬们指点;