java-Mybaits框架01

1.框架概念

在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率;

java后端框架

mybaits:对jdbc进行封装

Spring:对整个java后端架构进行管理。

SpringWeb:对web(Servlet)层进行封装

SpringBoot:对Spring框架的搭建进行封装

2.MyBait框架概述

   MyBatis 是一款优秀的持久层框架(dao层 数据访问层 数据持久层)。

  Mybaits是对jdbc进行的封装,避免了jdbc中手动设置参数,手动映射结果的操作。
   Mybaits将jdbc中的接口进行封装,提供了它自己的类和接口实现。
  MyBatis 可以使用 XML 或注解来配置和映射,将数据库中的记录自动映射成 Java 对象中,是一种 ORM(ORM Object Relational Mapping 对象关系映射)实现,将可以自动将数据映射到对象中的这种框架,也叫做orm框架。
   它支持动态 SQL 以及数据缓存.

3.Mybaits搭建

1.创建一个Maven项目

2.导入Mybaits依赖jar(在pom.xml文件中添加以下依赖)

<!--mybaits依赖-->
    <dependencies>
        <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.2</version>
    </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

3.创建一个全局的Mybaits配置文件,配置数据库连接等操作

在resource目录下创建一个mybaits.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/ssmdb?serverTimezone=Asia/Shanghai" />
                <property name="username" value="root" />
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

4.创建数据库,创建表,准备数据

create database ssmdb charset utf8
create table admin(
id int primary key auto_increment,
account varchar(32),
password varchar(32),
gender char(1)
)

5.创建一个访问的接口,并创建相关方法

在com.ffyc.mybaitspro.dao包下,创建AdminDao接口

public interface AdminDao {
  Admin finAdminById(int id);
}

6.创建Admin对象

在com.ffyc.mybaitspro.model包下创建此对象,并重写toString()方法

package com.ffyc.mybaitspro.model;

public class Admin {
    private int id;
    private String account;
    private String password;
    private String gender;

    public int getId() {
        return id;
    }

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

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

   public Admin(){
       System.out.println("Admin无参的构造方法");
   }

    @Override
    public String toString() {
        return "Admin{" +
                "id=" + id +
                ", account='" + account + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

7.测试Mybaits

public class Test1 {
    public static void main(String[] args) throws IOException {
        // 1.mybaits读取配置文件
        Reader resourceAsReader = Resources.getResourceAsReader("mybaits.xml");

        //2.创建 SqlSessionFactory 负责创建SqlSession对象(链接数据库的会话对象,类似Connection对象)
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsReader);
        //3.创建SqlSession对象
        SqlSession sqlSession=sqlSessionFactory.openSession();
        // 4.创建接口的代理对象(由框架生成)
        AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
//5.调用
      Admin admin=  adminDao.finAdminById(1);//让代理对象帮我们调用映射文件中与此接口中相同名称的方法。
        System.out.println(admin);
       //关闭与数据库连接
        sqlSession.close();//关闭与数据库的连接
    }
}

4.搭建补充

1.在IDEA中安装mybatisX插件

2.Mybatis 中文官网
https://mybatis.org/mybatis-3/zh_CN/index.html
3.数据库链接池
type="POOLED" 使用数据库连接池功能
数据库链接池
连接数据库:每次访问数据库,创建一个Connection,用完关闭,
但是访问量过大,每次都要创建新的对象,用完关闭,比较耗时
使用数据库连接池,在池(集合)中事先创建连接对象
用户访问时,直接池中获取一个连接对象
用完不销毁,还回到池中,这样就减少平凡创建销毁连接对象

4.Mybatis日志

具体选择哪个日志实现由 MyBatis 的内置日志工厂确定。它会使用最先找到的。
Mybatis 内置的日志工厂提供日志功能,具体的日志实现有以下几种方式:
SLF4J|LOG4J|JDK_LOGGINGCOMMONS_LOGGING|STDOUT_LOGGING
配置日志
<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

5.参数传递

1.单个参数直接传递
Admin selectAdmins(int id);
2.多个参数使用@Param(“id”)绑定
Admin login(@Param(“account”)String account,
@Param(“password”)String password);
3.如果传入一个复杂的对象,就需要使用 parameterType 参数进行类型定义,例如:
voidlogin1(Admin admin);
6.增删改查
事务 数据库事务管理
概念:
有时一次操作,需要向数据库发送多条sql,数据库需要程序最终执行没有问题时,向
数据库提交事务后,最在数据库中执行sql.确保一次操作中的多条sql,要么都成功,要么都不成功
(1)增加操作
在AdminDao接口中定义方法
然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,以及获得自增的主键值
<insert id="insertAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="id" keyColumn="id" >
    insert into admin(account,password,gender)values(#{account},#{password},#{gender})
</insert>

在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行
//单元测试
    /*以方法为单位,测试
    * 使用junit组件实现单元测试
    * */
@Test
    public void insert(){
        System.out.println("新增");
    Admin admin=new Admin();
    admin.setAccount("aa");
    admin.setPassword("111");
    admin.setGender("男");
    SqlSession sqlSession= MybatisUtil.getSQLSession();
    AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
    adminDao.insertAdmin( admin);
    sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
//新增,修改,删除完毕后,都需要手动提交事务
sqlSession.close();
    }

运行结果

(2)删除操作

在AdminDao接口中定义方法

然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,根据行id主键,删除行信息

 <delete id="deleteAdmin" parameterType="int" >
    delete from admin where id =#{id}
</delete>

在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行

//单元测试 /*以方法为单位,测试 * 使用junit组件实现单元测试 * */
@Test
public void delete(){
    System.out.println("删除");
    SqlSession sqlSession= MybatisUtil.getSQLSession();
    AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
    adminDao.deleteAdmin(6);


    sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
    //新增,修改,删除完毕后,都需要手动提交事务。
    sqlSession.close();
}

运行结果

运行前

运行后

(3)修改操作

在AdminDao接口中定义方法

然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,根据行id,修改行信息

<update id="updateAdmin" parameterType="Admin">
    update admin set account=#{account},password=#{password},gender=#{gender}
    where id=#{id}
</update>

在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行

 @Test
    public void update(){
        System.out.println("修改");
        SqlSession sqlSession= MybatisUtil.getSQLSession();
        AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
      Admin admin=new Admin();
      admin.setId(1);
      admin.setAccount("1212");
      admin.setPassword("23232");
      admin.setGender("女");

adminDao.updateAdmin(admin);

        sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
        //新增,修改,删除完毕后,都需要手动提交事务。
        sqlSession.close();
    }

运行结果

运行前

运行后

(4)查询操作

在AdminDao接口中定义方法

然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,根据行id,查询行信息

在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行

@Test
public void select(){
    System.out.println("修改");
    SqlSession sqlSession= MybatisUtil.getSQLSession();
    AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
    Admin admin=new Admin();
   adminDao.findAdminById(1);

    sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
    //新增,修改,删除完毕后,都需要手动提交事务。
    sqlSession.close();
}

运行结果

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值