Mysql(课时一)(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mysql(课时一)

D-1MyBatis的环境配置信息。在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">
<!-- 注释的快捷方式: 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>
       <!-- <mapper resource="com.book.dao.WorkerMapper"></mapper>
        <mapper resource="com.book.dao.BookMapper"></mapper>-->
   </mappers>
<!--
    <mappers>
        <mapper resource="com.book.dao.WorkerMapper"></mapper>
    </mappers>-->
</configuration

D-2MyBatis连接数据库的插件配置信息。database.properties文件中。

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8
user=root
password=@2580A369b369@

D-3MyBatisDao层中对数据的增删改查。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">
<!--suppress ALL -->
<!--将映射文件导向接口文件中去 产生一对应的关系-->
<mapper namespace="com.book.dao.IBookDao">
    <!--@1 查询book表中的数量-->
<select id="getCount" resultType="int" >
    select count(*) from book
</select>
<!--@2转入一个参数的书名-->
    <select id="getNameId" parameterType="int" resultType="String" >
        select name from book where id=#{id}
    </select>
<!--@3查询所有图书信息-->
    <select id="selectAll" resultType="Map">
        select *from book
    </select>
<!--转参数加多条数据-->
    <!--将所有图书信息id降序排列 desc从大到小  升序 asc-->
    <select id="selectOrder" resultType="Map">
       select *from book order by id desc
    </select>
    <!--<select id="selectAll" resultType="java.util.Map"></select>-->
    <!-- 增 如果想取除字段名 将整张表的字段名加上-->
    <insert id="addBook" parameterType="Map">
        insert into book values (#{id},#{name},#{author},#{price},#{count})
    </insert>
    <!--修改书籍标号图书价格为134-->
    <update id="updateBook" parameterType="Map">
            update book set price=#{price},count=#{count} where id=#{id}
    </update>
<!--删除-->
    <delete id="deleteBook" parameterType="Map">
    delete from book where  id between #{id1} and #{id2}
</delete>
    <!--查询语句内容利用接口-->
    <!--查询作者为曹雪芹 价格为100 的书名-->
    <!--如果sql需要转入两个条件 parameterType=""Map集合或者自定义实体类 -->
    <select id="getBookName1" resultType="String" parameterType="Map">
    select name from book where author=#{author} and price=#{price}
</select>
    <select id="getBookName3" resultType="Map">
        select id, name ,count from book where  author=#{author} and price=#{price}
    </select>
</mapper>

D-4MyBatis的接口中。

package com.book.dao;
iport org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface IBookDao {
    /*创建接口*/
    /*定义方法的返回值的类型必须与映射文件 resultType属性数据类型一致*/
    /*定义的方法名称一定要与执行sql语句的id属性中的名称一致*/
    /*方法中的形参数对应映射文件中parameterType=""的参数内容*/
    /*<select id="getCount" resultType="int">*/
    /*定义查询书籍数量的的方法名称*/
    int getCount();
    /*转入一个参数的书名-*/
    /*<select id="getNameId" parameterType="int" resultType="String" >*/
    String getNameId(int id);
    /*注意查询多条数据的时候,一定是List<Map>或者自定义实体类*/
    /*but   List<Map<String, Object>>*/
    List<Map<String, Object>> selectAll();
    /*<!--将所有图书信息id降序排列 desc从大到小  升序 asc-->*/
    /*  <select id="selectOrder" resultType="Map">*/
    List<Map<String, Object>> selectOrder();
    // <insert id="addBook" parameterType="Map">
    int addBook(Map<String, Object> Map);
    //<delete id="deleteBook" parameterType="Map">
    int deleteBook(Map<String, Object> Map);
    // <update id="updateBook" parameterType="Map">
    int updateBook(Map<String, Object> Map);
    /**
     * @param Map
     * @return
     */
    /*创建接口*/
    /*定义方法的返回值的类型必须与映射文件 resultType属性数据类型一致*/
    /*定义的方法名称一定要与执行sql语句的id属性中的名称一致*/
    /*方法中的形参数对应映射文件中parameterType=""的参数内容*/
    //<select id="getBookName1" resultType="String" parameterType="Map">
    String getBookName1(Map<String, Object> Map);

D-5MyBatis测试类。Test的测试类。

package com.book.test;
import com.book.dao.IBookDao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BookTest {
    public SqlSession ss = null;
//     public SqlSession dao=null;
    public void init() {
//       将主配置文件转换成输入流
        try {
            /*四句合并成两句*/
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            ss = new SqlSessionFactoryBuilder().build(is).openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void one() {
        init();
        IBookDao dao = ss.getMapper(IBookDao.class);
        int count = dao.getCount();
        System.out.println("查序书籍的数量为" + count + "本");
    }
  @Test
//查书籍名称
    public void two() {
        init();
        IBookDao dao = ss.getMapper(IBookDao.class);
        String name = dao.getNameId(11);
        System.out.println("查序书籍的数量为" + name);
    }
  @Test
    public void five() {
        init();
        IBookDao dao = ss.getMapper(IBookDao.class);
        List<Map<String, Object>> books = dao.selectAll();
        books.forEach(map -> System.out.println(map));
    }
     @Test
    public void six() {
        init();
        IBookDao dao = ss.getMapper(IBookDao.class);
        List<Map<String, Object>> books = dao.selectOrder();
        books.forEach(map -> System.out.println(map));
    }
     @Test
     public void seven() {
        init();
        Map<String, Object> map = new HashMap<>();
        map.put("id", null);
        map.put("name", "AAAA");
        map.put("author", "AAAA");
        map.put("price", 100);
        map.put("count", 67);
        IBookDao dao = ss.getMapper(IBookDao.class);
        int i = dao.addBook(map);
        ss.commit();
        if (i > 0) {
            System.out.println("增加成功");
        }
    @Test
    public void nine() {
        init();
        Map<String, Object> map = new HashMap<>();
        map.put("id1", 100);
        map.put("id2", 120);
        IBookDao dao = ss.getMapper(IBookDao.class);
        int i = dao.deleteBook(map);
        ss.commit();
        if (i > 0) {
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
     @Test
    public void nine() {
        init();
        Map<String, Object> map = new HashMap<>();
        map.put("id", 120);
        map.put("name", "gjs");
        IBookDao dao = ss.getMapper(IBookDao.class);
        int i = dao.updateBook(map);
        ss.commit();
        if (i > 0) {
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }
       @Test 
      public void enight() {
        init();
        Map<String, Object> map = new HashMap<>();
        map.put("author", "曹雪芹");
        map.put("price", 134);
        IBookDao dao = ss.getMapper(IBookDao.class);
        String i = dao.getBookName1(map);
        System.out.println(i);
    }
}

第三种方式MyBatis的注解方式:

E-1MyBatis的环境配置信息。在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>  -->
<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 class="com.book.dao.IBookDo"></mapper>
    </mappers>
</configuration>

E-2MyBatis连接数据库的插件配置信息。database.properties文件中。

//数据库的连接池

driver=com.mysql.cj.jdbc.Driver

//数据库的地址

url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8

//数据库的姓名

user=root

//数据库的密码

password=@2580A369b369@

E-4MyBatis的注解文件中的接口。

package com.book.dao;
import com.book.entity.Book;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
/*接口文件*/
public interface IBookDo {
    //查询book表中的图书数量
    @Select("   select count(*) from book")
    //对应的方法名称
    int getCount();
    //查询书籍编号为2的书名  @param
    //转入参数的时候需要增加@Param注解 该注解中的设置的变量名需要的变量名和占位符一致
    @Select("select name from book where id=#{id}")
    String getNameId(@Param("id") int id);
    //查询所有数据  返回值   List<Map<String, Object>>   List<Map<Book book>>
    @Select(" select *from book")
    List<Map<String, Object>> selectAll();
    //    查询书名为“人生的意义盒子”作者 价格 数量
    @Select("select author,price,count,from book where name=#{name}")
    Map<String, Object> getBook(@Param("name") String name);
    //查询多个参数查序多个字段
    @Select(" select name,id,count from book where author=#{author} and price=#{price}")
    Map<String, Object> getBookInfo(@Param("author") String author, @Param("price") int price);
    //查询多个参数查序多个字段方法二
    @Select(" select id,name,count from book where author=#{author} and price=#{price}")
    Map<String, Object> getBookInfo1(Map<String, Object> map);
    //<!--将所有图书信息id降序排列 desc从大到小  升序 asc-->
    //@Select("select *from book order by id desc")
    //增加语句
    @Insert("insert into book(name,author,price,count) values (#{name},#{author},#{price},#{count})")
    int addBook(Book book);
    //修改语句
    // 2 利用mysql修改语句<update>   id   parameterType   resultType  -->
    @Update("update book set price=#{price},count=#{count} where id=#{id}")
    int updateBook(Map<String, Object> map);
    //删除一条语句
    //@3利用mysql删除语句<delete>   id   parameterType   resultType
    @Delete("delete from book ")
    int deleteAll();
}

E-5MyBatis测试类。Test的测试类。

package com.book.test;
import com.book.dao.IBookDo;
import com.book.entity.Book;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 2022/3/17
 */
public class BookTest {
    public SqlSession ss = null;
    public IBookDo dao = null;
    public void init() {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//    SqlSessionFactoryBuilder().build(is).openSession()
            ss = new SqlSessionFactoryBuilder().build(is).openSession();
            dao = ss.getMapper(IBookDo.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void one() {
        init();
        int count = dao.getCount();
        System.out.println("查询书籍的数量" + count + "本");
    }
    @Test
    public void two() {
        init();
        String nameId = dao.getNameId(124);
        System.out.println(nameId);
    }
    //查询所有的书籍信息
    @Test
    public void tree() {
        init();
        List<Map<String, Object>> books = dao.selectAll();
        books.forEach(map -> System.out.println(map));
    }
    @Test
    public void four() {
        init();
        Map<String, Object> map = dao.getBookInfo("人生意义何在", 6);
        System.out.println(map);
    }
    @Test
    public void four1() {
        init();
        Map<String, Object> m = new HashMap<>();
        m.put("author", "人生意义何在");
        m.put("price", 6);
        Map<String, Object> map = dao.getBookInfo1(m);
        System.out.println(map);
    }
    @Test
    public void six() {
        init();
// @Insert("insert into book(id,name,author) values (#{id},#{name},#{author})")
        Book book = new Book(0, "我的世界", "《java》", 23, 45);
        int i = dao.addBook(book);
        ss.commit();
        if (i > 0) {
            System.out.println("增加成功");
        }
    }
    @Test
    public void seven() {
        init();
        Map<String, Object> map = new HashMap<>();
        map.put("id", 138);
        map.put("price", 20);
        map.put("count", 1200);
        int i = dao.updateBook(map);
        ss.commit();
        if (i > 0) {
            System.out.println("数据修改成功");
        }
    }
    //    数据删除成功
    @Test
    public void eight() {
        init();
        int i = dao.deleteAll();
        ss.commit();
        if (i > 0) {
            System.out.println("数据删除成功");
        }
    }
}

运行结果。

上面的案例你能用今天所讲五种方案可以尝试一下。熟能生巧。多学多看多思考。如何将数据在浏览器中增删改查呢?

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 监控 关系型数据库
MySQL进阶(一)
MySQL进阶(一)
43 0
|
7月前
|
存储 安全 关系型数据库
MySQL进阶(二)
MySQL进阶(二)
32 0
|
存储 缓存 关系型数据库
132.【MySQL_进阶】(十)
132.【MySQL_进阶】
146 1
|
存储 SQL 数据库
132.【MySQL_进阶】(八)
132.【MySQL_进阶】
96 0
|
SQL 关系型数据库 MySQL
132.【MySQL_进阶】(九)
132.【MySQL_进阶】
120 0
|
存储 SQL 关系型数据库
132.【MySQL_进阶】(四)
132.【MySQL_进阶】
72 0
|
存储 SQL 关系型数据库
132.【MySQL_进阶】(一)
132.【MySQL_进阶】
71 0
|
存储 SQL 关系型数据库
132.【MySQL_进阶】(六)
132.【MySQL_进阶】
119 0
|
SQL 关系型数据库 MySQL
132.【MySQL_进阶】(五)
132.【MySQL_进阶】
137 0
|
SQL 关系型数据库 MySQL
132.【MySQL_进阶】(三)
132.【MySQL_进阶】
89 0