IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SSM框架之一MyBatis(课时二加课时三)2022/3/10 -> 正文阅读

[Java知识库]SSM框架之一MyBatis(课时二加课时三)2022/3/10

目录

第一点:内容文章目录介绍。

第二点:内容SSM 简称三个框架 Sping SpingMVC MyBatis .

第三点内容:对数据库的增删改查sql语句的回顾。

第四点内容:Sping框架的环境的配置。

1 创建idea项目目录;创建项目名称为MyBatis0310?? ?如何创建项目.项目结构图。

?2 将MyBatis的架包增加到lib文件中并关联项目

3 创建resources资源文件夹。将mybatis-config.xml和database.properties文件导入resources资源文件夹中。

4 开始配置mybatis-config.xml文件信息内容,打开文件会看到这些内容。

?5 开始配置mybatis-config.xml文件信息内容??

6 创建Dao层包,并把操作sql语句??

7 创建测试类:测试框架中的MyBatis可用不??

?? ?8 创建步骤分析

第五点内容:针对所有的sql语句进行查询操作。

第六点内容流程代码。

1导入所需的架包。

2建立文件框架所需要的包

3开始配饰Sping环境的

4开始编写测试类

注意:建立idea的实体类。

?你所需要的方法都在这里 set get toString() 有参 无惨 简称实体类的封装

?

5优化代码结构 .

?

第八点汇出这二次课思维导图。

?

?本章到这里结束了


第一点:内容文章目录介绍。


?

第二点:内容SSM 简称三个框架 Sping SpingMVC MyBatis .


第三点内容:对数据库的增删改查sql语句的回顾。

# 对sql数据的增删改查操作
#查询表的结构
DESC readingbook
DESC book
#查询表的内容
SELECT * ?FROM book
SELECT * FROM readingbook
#查询表的数量
?select count(*) from book


#增加一条语句
INSERT INTO `mdb`.`book`(`id`, `name`, `author`, `price`, `count`) VALUES (12, '我是Mysql2', 'java', 34, 45)

#删除一条语句
DELETE FROM `mdb`.`book` WHERE `id` = 12

DELETE FROM `mdb`.`readingbook` WHERE `id` = 10011001

#修改一条语句
UPDATE `mdb`.`book` SET `price` = 340, `count` = 44 WHERE `id` = 11

#查询一条语句
?select name from book where author='黑马成员' and price='30'
?


第四点内容:Sping框架的环境的配置。

1 创建idea项目目录;创建项目名称为MyBatis0310
?? ?如何创建项目.项目结构图。


2 将MyBatis的架包增加到lib文件中并关联项目

?

?


3 创建resources资源文件夹。将mybatis-config.xml和database.properties文件导入resources资源文件夹中。


4 开始配置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">


?
5 开始配置mybatis-config.xml文件信息内容
??

?<configuration>
? ? <!--将database.properties文件加载该文件配置文件统一管理-->
? ? <properties resource="database.properties"></properties>
? ? <!--设置项目运行配置环境-->
? ? <!--注意:default标签内容与id属性内容一致-->
? ? <environments default="davelopment">
? ? ? ? <environment id="davelopment">
? ? ? ? ? ? <!--上面是操作数据库事务管理器-->
? ? ? ? ? ? <transactionManager type="JDBC"></transactionManager>
? ? ? ? ? ? <!-- 创建和配置数据库连接池-->
? ? ? ? ? ? <dataSource type="POOLED">
? ? ? ? ? ? ? ? <!--连接数据库的四个参数 文件来自database.properties文件目录-->
? ? ? ? ? ? ? ? <property name="driver" value="${driver}"/>
? ? ? ? ? ? ? ? <property name="url" value="${url}"/>
? ? ? ? ? ? ? ? <property name="username" value="${user}"/>
? ? ? ? ? ? ? ? <property name="password" value="${password}"/>
? ? ? ? ? ? </dataSource>
? ? ? ? </environment>
? ? </environments>
</configuration>


6 创建Dao层包,并把操作sql语句
??

?<mapper namespace="com.book.dao">
? ? <!--#查询book表中-->
? ? <!-- 在编写映射文件的sql的语句的时候,需要分析 是否传入数据 ?是否有返回值 ?并判断数据类型-->
? ? <!--resultType='int' 表示sql语句执行后,得到返回值的数据类型-->
? ? <select id="getBookNumber" resultType="int">
? ? ? ? SELECT count(*) from book
? ? </select>

</mapper>


7 创建测试类:测试框架中的MyBatis可用不
??

?public void one() throws IOException {
? ? ? ? InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
? ? ? ? //创建sql工厂生成器
? ? ? ? SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
? ? ? ? //获得工厂对象
? ? ? ? SqlSessionFactory factory=builder.build(is);
? ? ? ? //通过工厂对象操作sql对象
? ? ? ? SqlSession ss=factory.openSession();
? ? ? ? //查询结果单个数据
? ? ? ? //命名空间加id的值
? ? ? ? ?int i= ?ss.selectOne("com.book.dao.getBookNumber");

? ? ? ? System.out.println("查询书籍的数量"+i+"本");

? ? }


?? ?8 创建步骤分析


?? ??? ?1 ? ? 创建sql工厂生成器 ?InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
? ? ?
?? ??? ?2 ?获得工厂对象 ? SqlSessionFactory factory=builder.build(is);
?? ??? ?3 ? ?通过工厂对象操作sql对象 SqlSession ss=factory.openSession();
?? ??? ?4 ?查询结果为单个数据 命名空间包的完整路径加上id的值
? ? ? ? ?int i= ?ss.selectOne("com.book.dao.getBookNumber");

?


第五点内容:针对所有的sql语句进行查询操作。

<?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">
<!--该映射文件作用:用于存储和管理需要操作的sql语句-->
<!--命名空间一般填写的是该映射文件所处在的包的路径-->
<!--命名空间+id-->
<!--数据反问层实现对数据的增删改查询的这些基础操作-->
<mapper namespace="com.book.dao">
    <!--查询book表中一共有多少本书-->
    <!--在编写映射文件的sql语句的时候,需要分析出是否需要传入数据,是否有返回值,并且要判断返回值类型-->
    <!-- resultType="int" 作用是表示该sql语句执行结束后,得到的返回值的类型 -->
    <!--不传参数 查一个数据-->
    <select id="getBookNumber" resultType="int">
        select count(*) from book
    </select>

    <!--查询书籍-->
    <!--@1 MyBatis框架中使用的占位符#{字段名}等价于jdbc?        ${字段名} 等价于java+连接符-->
    <!--parameterType="int"  该属性控制转入的数据的数据类型的数值
-->
    <select id="getBookName" resultType="String" parameterType="int">
        select name from book where id=#{id}
    </select>

<!--查询作者为曹雪芹 价格为100 的书名-->
    <!--如果sql需要转入两个条件 parameterType=""Map集合或者自定义实体类 -->

<select id="getBookName1" resultType="String" parameterType="Map">
    select name from book where author=#{author} and price=#{price}
</select>


<!--parameterType="com.book.entity.book"  实体类-->
    <select id="getBookName2" resultType="String" parameterType="com.book.entity.book">
    select name from book where author=#{author} and price=#{price}
</select>

<!-- Map 集合方向-->
    <select id="getBookName3" parameterType="Map" resultType="com.book.entity.book" >
        select id, name ,count from book where  author=#{author} and price=#{price}
    </select>


<!--传一个参数查多个字段数局-->
    <!--查书籍编号7 的书名 作者 数量-->
    <select id="getBookNameId" parameterType="int" resultType="Map" >
        select  name ,author,price,count from book where id=#{id}
    </select>

<!--传一个参数查多个字段数端-->
    <select id="getBookNameId1" parameterType="int" resultType="com.book.entity.book" >
        select  name ,author,price,count from book where id=#{id}
    </select>

<!--list里面调用map集合或者是实体类-->
    <select id="selectAll" resultType="Map">
        select *from book
    </select>

<!--查书名关于人字的-->
    <select id="selectlike" parameterType="String"  resultType="com.book.entity.book">
        select *from book where name = #{name}
    </select>





</mapper>

第六点内容流程代码。

1导入所需的架包。

2建立文件框架所需要的包

3开始配饰Sping环境的

4开始编写测试类

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8
user=root
password=@2580A369b369@
<?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">
<!-- 注释的快捷方式: ctrl+shift+/ -->
<!--添加配置标签-->
<configuration>
    <!--将database.properties文件加载至该主配置文件进行统一管理-->
    <properties resource="database.properties"></properties>
    <!--设置项目的运行环境-->
    <!--注意:default标签上填写的内容必须要和id属性的内容一致-->
    <environments default="development">
        <environment id="development">
            <!--配置操作数据库的事务管理器-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"></property>
                <property name="username" value="${user}"></property>
                <property name="password" value="${password}"></property>
            </dataSource>
        </environment>
    </environments>

    <!--将映射文件导入-->
    <mappers>
        <mapper resource="com/book/dao/Mapper.xml"></mapper>
    </mappers>

</configuration>

<?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">
<!--该映射文件作用:用于存储和管理需要操作的sql语句-->
<!--命名空间一般填写的是该映射文件所处在的包的路径-->
<!--命名空间+id-->
<!--数据反问层实现对数据的增删改查询的这些基础操作-->
<mapper namespace="com.book.dao">
    <!--查询book表中一共有多少本书-->
    <!--在编写映射文件的sql语句的时候,需要分析出是否需要传入数据,是否有返回值,并且要判断返回值类型-->
    <!-- resultType="int" 作用是表示该sql语句执行结束后,得到的返回值的类型 -->
    <!--不传参数 查一个数据-->
    <select id="getBookNumber" resultType="int">
        select count(*) from book
    </select>

    <!--查询书籍-->
    <!--@1 MyBatis框架中使用的占位符#{字段名}等价于jdbc?        ${字段名} 等价于java+连接符-->
    <!--parameterType="int"  该属性控制转入的数据的数据类型的数值
-->
    <select id="getBookName" resultType="String" parameterType="int">
        select name from book where id=#{id}
    </select>

<!--查询作者为曹雪芹 价格为100 的书名-->
    <!--如果sql需要转入两个条件 parameterType=""Map集合或者自定义实体类 -->

<select id="getBookName1" resultType="String" parameterType="Map">
    select name from book where author=#{author} and price=#{price}
</select>


<!--parameterType="com.book.entity.book"  实体类-->
    <select id="getBookName2" resultType="String" parameterType="com.book.entity.book">
    select name from book where author=#{author} and price=#{price}
</select>

<!-- Map 集合方向-->
    <select id="getBookName3" parameterType="Map" resultType="com.book.entity.book" >
        select id, name ,count from book where  author=#{author} and price=#{price}
    </select>


<!--传一个参数查多个字段数局-->
    <!--查书籍编号7 的书名 作者 数量-->
    <select id="getBookNameId" parameterType="int" resultType="Map" >
        select  name ,author,price,count from book where id=#{id}
    </select>

<!--传一个参数查多个字段数端-->
    <select id="getBookNameId1" parameterType="int" resultType="com.book.entity.book" >
        select  name ,author,price,count from book where id=#{id}
    </select>

<!--list里面调用map集合或者是实体类-->
    <select id="selectAll" resultType="Map">
        select *from book
    </select>

<!--查书名关于人字的-->
    <select id="selectlike" parameterType="String"  resultType="com.book.entity.book">
        select *from book where name = #{name}
    </select>





</mapper>

注意:建立idea的实体类。

?你所需要的方法都在这里 set get toString() 有参 无惨 简称实体类的封装


?

package com.book.entity;
/*
* 自定义实体类,要保证类名的表名一致
* 全局变量的数据类型与编码的字段名的数据类型一致
*
 */
public class book {
    private  int id;
    private  String name;
    private  String author;
    private  double price;
    private int count;

    public book(int id, String name, String author, double price, int count) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.price = price;
        this.count = count;
    }

    public book() {
    }

    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 String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    @Override
    public String toString() {
        return "book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", count=" + count +
                '}';
    }


}

package com.book.test;

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;

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

/**
 * Created by admin on 2022/3/8.
 */
public class BookTest0 {
    /**
     * 对数据的查询操作
     */

    @Test
    public void two()  {
        //将mybatis的主配置文件加载至java代码
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建sql工厂生成器
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            //获得工厂对 象
            SqlSessionFactory factory=builder.build(is);
            //通过工厂对象获得操作sql语句的对象
            SqlSession ss=factory.openSession();
            //查询的结果是一个单个的数据
            //命名空间+id的值
            String name=ss.selectOne("com.book.dao.getBookName");
            System.out.println("查询的书籍名称为:"+name);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

package com.book.test;

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;

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

public class BookTet1 {

     @Test
    public void one(){
        //将mybatis的主配置文件加载至java代码
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建sql工厂生成器
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            //获得工厂对象
            SqlSessionFactory factory=builder.build(is);
            //通过工厂对象获得操作sql语句的对象
            SqlSession ss=factory.openSession();
            //查询的结果是一个单个的数据
            //命名空间+id的值
           int i= ss.selectOne("com.book.dao.getBookNumber");
            System.out.println("查询到的书籍总数量为第  :"+i+"本");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }





}

5优化代码结构 .

package com.book.test;

import com.book.entity.book;
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;
/**
 *
 * 2022/3/10
 */
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class BookTet2 {
    SqlSession ss = null;
    public void init() {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建sql工厂生成器
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            //获得工厂对象
            SqlSessionFactory factory = builder.build(is);
            //通过工厂对象获得操作sql语句的对象
            /* SqlSession ss = factory.openSession();*/
            ss = factory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    @Test
    public void one() {
        //将mybatis的主配置文件加载至java代码
        //查询的结果是一个单个的数据
        //命名空间+id的值
        init();
        int i = ss.selectOne("com.book.dao.getBookNumber");
        System.out.println("查询到的书籍总数量为第  :" + i + "本");
    }


    @Test
    public void two() {
        //将mybatis的主配置文件加载至java代码
        //查询的结果是一个单个的数据
        //命名空间+id的值
        init();
        /* String name=ss.selectOne("com.book.dao.getBookName",转入的数字类型);*/
        String name = ss.selectOne("com.book.dao.getBookName", 2);
        System.out.println("查询的书籍名称为:" + name);
    }


    @Test
    public void three() {
        /*封装到MaP集合数值名称与sql占位符保持一致*/
        init();
        Map<String, Object> map = new HashMap<>();
        map.put("author", "曹雪芹");
        map.put("price", 100);
        String name = ss.selectOne("com.book.dao.getBookName1", map);
        System.out.println("查询的书籍名称为:" + name);
    }


    @Test
    public void three1() {
        /*封装到MaP集合数值名称与sql占位符保持一致*/
        init();
        //创建book实体类
        book book = new book();
        book.setAuthor("曹雪芹");
        book.setPrice(100);
        String name = ss.selectOne("com.book.dao.getBookName2", book);
        System.out.println("查询的书籍名称为:" + name);
        }


    @Test
    public void four() {
        /*封装到MaP集合数值名称与sql占位符保持一致*/
        init();
        Map<String ,Object> map=ss.selectOne("com.book.dao.getBookNameId",7);
        System.out.println(map);
    }


@Test
    public void four1() {
        /*封装到MaP集合数值名称与sql占位符保持一致*/
        init();
        //创建book实体类
        book book = new book();
        book=ss.selectOne("com.book.dao.getBookNameId1",123);
        System.out.println(book);
    }


    }

package com.book.test;

/**
 * 2022/3/10
 */

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;


import java.awt.print.Book;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class BookTet4 {

    SqlSession ss = null;

    public void init() {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建sql工厂生成器
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            //获得工厂对象
            SqlSessionFactory factory = builder.build(is);
            //通过工厂对象获得操作sql语句的对象
            /* SqlSession ss = factory.openSession();*/
            ss = factory.openSession();
        } catch (IOException e) {
            e.printStackTrace();

        }

    }
    /*查询多条数据*/
    @Test
    public  void six(){
        init();
        List<Map<String,Object>> books=ss.selectList("com.book.dao.selectAll");
        books.forEach(map-> System.out.println(map));
    }



    /*查询为实体类*/
@Test
    public  void seven(){
    init();
    //MYsQL数据库中的两种通符 % 多个字符 _: 一个字符
    List<Book> books=ss.selectList("com.book.dao.selectlike","%Sping%");
    System.out.println(books);
    books.forEach(book -> System.out.println(book));
}




@Test
    public  void nine(){
    init();
    Map<String ,Object> map=ss.selectOne("com.book.dao.getBookNameId",7);
    System.out.println(map);

}


}

第八点汇出这二次课思维导图。

?

?

?

?本章到这里结束了


  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 21:59:56  更:2022-03-11 22:00:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:03:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码