mybatis入门第一章+自学

Mybatis是什么?

   它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低。

ORM是什么?

  对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的Student类,去对应数据库中的一张student表,类中的属性和表中的列一一对应。

为什么Mybatis是半自动的ORM框架?

  因为Mybatis需要手动编写sql语句,所以Mybatis的sql语句灵活性高,可以根据需求需要开发者自由的编写相关sql语句,而全自动的ORM框架是只需要定义好ORM映射关系,不用手动编写sql语句.

Mybatis编写步骤:

  • 创建maven项目
  • 导入依赖的jar包,编写全局配置文件
  • 编写mapper.xml映射文件
  • 加载全局配置文件,生成SqlSessionFactory
  • 创建SqlSession,调用mapper映射文件中的SQL语句来执行CRUD操作

详细步骤:

1.maven项目创建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.配置pom.xml 导入jar包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
     <dependencies>
     <!-- 数据库jar -->
     <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.18</version>
</dependency>
      <!-- mybatis jar -->
     <dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.2.7</version>
</dependency>
     <dependency>
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     </dependency>
     <dependency>
     <groupId>javax.servlet.jsp</groupId> 
   <artifactId>jsp-api</artifactId> 
   <version>2.1</version> 
     </dependency>
         <dependency>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>2.4.3</version>
      </dependency>
      <dependency>
    <groupId>junit</groupId><!-- groupId坐标 -->
    <artifactId>junit</artifactId><!-- artifactId jar包名称 -->
    <version>4.12</version><!-- 版本 -->
    <scope>test</scope>
    </dependency>
     </dependencies>
  <build>
  <!-- jdk编译插件及maven-war-plugin配置 -->
    <plugins>
       <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.1</version>
      </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        
        <plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <port>8888</port>
    <path>/Springboot01</path> <!-- 设置Tomcat 7访问该Maven中web资源的虚拟路径 -->
    <uriEncoding>UTF-8</uriEncoding><!-- 设置项目名称 -->
  </configuration>
</plugin>
        
    </plugins>
  </build> 
</project>

2.1创建一个实体类

package bean;

public class Booktype {
	private int tid;
	private String booktypename;
	public int getTid() {
		return tid;
	}
	public void setTid(int tid) {
		this.tid = tid;
	}
	public String getBooktypename() {
		return booktypename;
	}
	public void setBooktypename(String booktypename) {
		this.booktypename = booktypename;
	}
	public Booktype(int tid, String booktypename) {
		super();
		this.tid = tid;
		this.booktypename = booktypename;
	}
	public Booktype() {
		super();
	}
	@Override
	public String toString() {
		return "Booktype [tid=" + tid + ", booktypename=" + booktypename + "]";
	}
	

}

2.2 配置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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/demo?serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="bean/BooktypeMapper.xml"/> //这里写你BooktypeMapper.xml路径 下面图有获取路径方法 获取后复制过来bean包前面都删掉
  </mappers>
</configuration>

在这里插入图片描述
3.配置BooktypeMapper.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">
  <!-- 实体类的映射文件 -->
  <!-- MyBatis属于映射框架 用来映射实体类和sql语句之间的关系 -->
<mapper namespace="org.mybatis.example.BlogMapper">
<!--     select             查询方法
         id                 方法名称 
         parameterType      传入数据中的参数类型
         resultType        (用于告诉数据库将查到的数据自动填充到bean.Booktype类中)返回数据装在哪个类中
         #{}                用于取值 取的字段名的与数据库中的字段名一样
-->
<select id="SelectByTid" parameterType="int" resultType="bean.Booktype">
select * from Booktype where tid=#{tid}
</select>


<!--     原始public void Add(Booktype booktype)
         insert             添加方法
         id                 方法名称 
         parameterType      传入数据中的参数类型
         resultType        (用于告诉数据库将查到的数据自动填充到bean.Booktype类中)返回数据装在哪个类中
         #{}                用于取值 在添加时候添加数据的字段名的与数据库中字段名一样 顺序也要一样
-->
<insert id="Add" parameterType="bean.Booktype">
INSERT INTO booktype (`tid`,`booktypename`) VALUES (null,#{booktypename})
</insert> 
</mapper>

class在这里插入图片描述
4.加载全局配置文件,生成SqlSessionFactory(我的测试类也直接写在了其中)MybatisTest.class

package bean;

import java.io.IOException;
import java.io.InputStream;

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 org.junit.Test;
/***
*  hengqirong
*/
public class MybatisTest {

	/***
	 * 根据id进行查询
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException {
		String resource = "mybatis-config.xml";//配置文件的路径 获取数据库
		InputStream inputStream = Resources.getResourceAsStream(resource);//拿到数据库的流
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取会话工厂 用会话工厂去解析上面的xml
		SqlSession session=sqlSessionFactory.openSession();//打开Session
		Booktype bt=session.selectOne("org.mybatis.example.BlogMapper.SelectByTid",1);//提供了增删改查方法 这里我用的查询括号里(BooktypeMapper.xml中方法名,查询的参数)
		System.out.println(bt);
		session.close();//关闭Session
	}
	
	/***
	 * 添加  mybatis
	 * @throws IOException
	 */
	@Test
	public void test2() throws IOException {
		String resource = "mybatis-config.xml";//加载配置文件 配置文件的路径 获取数据库
		InputStream inputStream = Resources.getResourceAsStream(resource);//拿到数据库的流
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取会话工厂 用会话工厂去解析上面的xml
		SqlSession session=sqlSessionFactory.openSession();//打开Session 只用通过Session去掉增删改查方法
		Booktype bt=new Booktype(0,"测试社科");
		System.out.println(bt);
		session.insert("org.mybatis.example.BlogMapper.Add",bt);//通过BooktypeMapper.xml中的namespace路径找到方法id
		session.commit();//手动提交事务,否则数据库不显示,增删改成功必须手动提交事务
		session.close();
	}
	
	
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上这个情况表示运行成功,如果报错创建个txt文件将错误复制到.txt文件中进行排错

总结

  1. 编写mapper.xml,书写SQL,并定义好SQL的输入参数,和输出参数
  2. 编写全局配置文件,配置数据源,以及要加载的mapper.xml文件
  3. 通过全局配置文件,创建SqlSessionFactory
  4. 每次进行CRUD时,通过SqlSessionFactory创建一个SqlSession
  5. 调用SqlSession上的
    selectOne 根据id进行查询
    selectList 列表显示查询全部
    insert 添加方法
    delete 删除方法
    update 修改方法
    等方法,传入mapper.xml中SQL标签的id,以及输入参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱编程的小白~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值