21.04.29---mybatis---学习记录

21.04.29

三层架构

1.界面层:和用户打交道,接受用户的请求参数,显示处理结果(jsp,html,servlet)
2.业务逻辑层:接受了界面层传递的数据,计算逻辑,调用数据库,获取数据
3.数据访问层:就是访问数据库,执行对数据的增删改查

三层中类的交互:
用户使用界面–>业务逻辑层–>数据访问层–>数据库

三层对应的处理框架
界面层----servlet----springmvc
业务逻辑层----service类----spring
数据访问层----dao类----mybatis

框架

框架是一个软件,半成品的软件,定义好了一些基础功能,需要加入你的功能就是完整的。基础功能是可重复使用的,可升级的
框架中定义好了一些功能-这些功能是可用的
框架特点:
1,框架一般不是全能的,不能做所有事情
2.框架是针对某一个领域有效。特长在某一个方面,比如mybatis做数据库操作强,但是他不能

mrybati提供的功能:

1.提供了创建Conneotion ,statement,Resultset的能力,不用开发人员创建这些对象了
2,提供了执行sq1语句的能力,不用你执行sql
3.提供了循环sql,把sql的结果转为java对象,List集合的能力
4.提供了关闭资源的能力/不用你关闭Connection,statement,Resultset

用mybatis实现对student表的全部查询

实现步骤
1、新建的student表
2.加入maven的mybatis坐标,mysql驱动的坐标
3,创建实体类,student–保存表中的一行数据的
4.创建持久层的dao接口,定义操作数据库的方法
5、创建一个mybatis使用的配置文件。叫做sql映射文件:写sql语句的。一般一个表一个sql映射文件。这个文件是xml文件。
6.创建mybatis的主配置文件:一个项目就一个主配置文件。主配置文件提供了数据库的连接信息和sql映射文件的位置信息
7.创建使用mybatis类,通过mybatis访问数据库

Student.java
package com.bjpowernode.domain;

public class Student {

private Integer id;
private String name;
private String email;
private Integer age;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

@Override
public String toString() {
    return "Student{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", email='" + email + '\'' +
            ", age=" + age +
            '}';
}
}

StudentDao.java
package com.bjpowernode.dao;

 import com.bjpowernode.domain.Student;

import java.util.List;

public interface StudentDao {

public List<Student> selectStudents();

}

StudentDao.xml

<?xml version="1.0" encoding="UTF-8" ?> select * from Blog where id = #{id}
<!--
    select:表示查询操作
    id: 要执行的sql语法的唯一标识,mybatis会使用这个id值来找到要执行的sql语句
        可以自定义,但是要求使用接口中的方法名称
    resultType: 表示结果类型的,是sql语句执行后得到的ResultSet,遍历这个ResultSet得到的Java对象的类型
                值写的是类型的全限定名称
-->
<select id="selectStudents" resultSetType="com.bjpowernode.domain.Student" >
    select id,name,email,age from student order by id
</select>

图片: 在这里插入图片描述pom.xml

mybatis依赖

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.1</version>
</dependency>

mysql驱动

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.9</version>
</dependency>

在这里插入图片描述

<resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>

mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--环境配置:数据库的连接信息
    default: 必须和某个environment的id值一样
             告诉mybatis使用哪个数据库的连接信息
 -->
<environments default="development">
    <!--
        environment: 一个数据库信息的配置,环境
        id: 一个唯一值,自定义,表示环境的名称
    -->
    <environment id="mydev">
        <!--
            transactionManager: mybatis的事物类型
            type:JDBC(表示使用jdbc中的connection对象,rollback做事务处理)
        -->
        <transactionManager type="JDBC"/>
        <!--
            dataSource:表示数据源,连接数据库的
            type: 表示数据源的类型,POOLED表示使用连接池
        -->
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test"/>
            <property name="username" value="root"/>
            <property name="password" value="111111"/>
        </dataSource>
    </environment>
</environments>
<mappers>
    <!--
        一个mapper标签指定一个文件的位置
        从类路径开始的路径信息。 target/classes(类路径)之后
    -->

    <mapper resource="com/bjpowernode/dao/StudentDao.xml"/>
</mappers>

MyApp.java

package com.bjpowernode;

import com.bjpowernode.domain.Student;
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 MyApp {
public static void main(String[] args) throws IOException {
//访问mybatis读取student数据
//1.定义mybatis主配置文件的名称,从类路径开始
String config=“mybatis.xml”;
//2.读取这个config表示的文件
InputStream in= Resources.getResourceAsStream(config);
//3.创建了SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder bulider=new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory=bulider.build(in);
//5.获取SqlSession对象,从SsqlSessionFactory中获取SqlSession
SqlSession sqlSession=factory.openSession();
//6.指定要执行的sql语句的标识 sql映射文件中的namespace+“.”+标签的id值
String sqlId=“com/bjpowernode/dao/StudentDao”+"."+“selectStudents”;
//7.执行sql语句,通过sqlId找到语句
List studentList=sqlSession.selectList(sqlId);
//8.输出结果
studentList.forEach(student -> System.out.println(student));
//9.关闭sqlSession对象
sqlSession.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值