美文网首页
Java实训(4) -- MyBatis初学习 -- 2018-

Java实训(4) -- MyBatis初学习 -- 2018-

作者: 空心老竹 | 来源:发表于2018-06-08 19:23 被阅读0次

    Mysql 复习

    1.Mysql 安装

    1. 设置 Mysql 编码为 UTF-8
    2. 端口设置为 3306
    3. 服务名设置为 Mysql
    4. root 账号密码设置为 123456
    5. 安装 Navicat Premium
    6. 连接Mysql,创建一个新用户
      用户名:javauser
      密码:123456
    

    2.小型书店系统数据库设计

        DROP TABLE IF EXISTS `book`;
        CREATE TABLE `book` (
          `isbn` varchar(50) NOT NULL,
          `book_name` varchar(80) NOT NULL,
          `price` double NOT NULL,
          `publish_date` datetime NOT NULL,
          `publisher` varchar(255) NOT NULL,
          `category_id` int(11) DEFAULT NULL,
          PRIMARY KEY (`isbn`),
          KEY `FK_book_category` (`category_id`),
          CONSTRAINT `FK_book_category` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        
    
        DROP TABLE IF EXISTS `cart`;
        CREATE TABLE `cart` (
          `cart_id` int(11) NOT NULL AUTO_INCREMENT,
          `user_id` int(11) DEFAULT NULL,
          `create_date` datetime DEFAULT NULL,
          PRIMARY KEY (`cart_id`),
          KEY `FK_cart_customer` (`user_id`),
          CONSTRAINT `FK_cart_customer` FOREIGN KEY (`user_id`) REFERENCES `customer` (`user_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        
    
        DROP TABLE IF EXISTS `cart_item`;
        CREATE TABLE `cart_item` (
          `cart_item` int(255) NOT NULL AUTO_INCREMENT,
          `cart_id` int(11) NOT NULL,
          `book_id` varchar(50) NOT NULL,
          `count` int(11) DEFAULT NULL,
          `add_time` datetime DEFAULT NULL,
          PRIMARY KEY (`cart_item`),
          KEY `FK_cartitem_book` (`book_id`),
          KEY `FK_cartitem_cart` (`cart_id`),
          CONSTRAINT `FK_cartitem_book` FOREIGN KEY (`book_id`) REFERENCES `book` (`isbn`),
          CONSTRAINT `FK_cartitem_cart` FOREIGN KEY (`cart_id`) REFERENCES `cart` (`cart_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        
    
        DROP TABLE IF EXISTS `category`;
        CREATE TABLE `category` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `name` varchar(20) DEFAULT NULL,
          PRIMARY KEY (`id`),
          UNIQUE KEY `uq_category_name` (`name`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        
    
        DROP TABLE IF EXISTS `customer`;
        CREATE TABLE `customer` (
          `user_id` int(11) NOT NULL AUTO_INCREMENT,
          `account` varchar(20) NOT NULL,
          `password` varchar(32) NOT NULL,
          `balance` double NOT NULL,
          PRIMARY KEY (`user_id`),
          UNIQUE KEY `UQ_user_account` (`account`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    

    MyBatis 初学习

    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.

    3W1H

    What - 什么是 MyBatis?

    Why - 为什么要学 MyBatis?

    When - 在什么时候该适应 MyBatis?(Where - 在哪里使用MyBatis?)

    How - 如何使用 MyBatis

    mybatis 开发步骤

    1. 下载mybatis及其依赖包

    2. 新建Java工程,导入 mybatis 的 jar 包到项目工程中

    3. 编写一个数据操作映射接口

    4. 编写 mybatis 配置文件

    5. 编写数据操作映射文件

    6. 编写测试代码或业务代码,构造 mybatis 运行环境,并测试数据操作接口


    1. 下载mybatis及其依赖包

    2. 新建Java工程,导入 mybatis 的jar包

      项目结构图
    1. 编写一个数据操作映射接口 CategoryMapper.java
    package com.neuedu.bookstore.mapper;
    
    import java.util.List;
    import com.neuedu.bookstore.bean.Category;
    
    public interface CategoryMapper {
        public int addCategory(Category category);
        public List<Category> searchByName(Category category);
    }
    
    1. 编写mybatis 配置接口 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.jdvc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/ssmdb"/>
            <property name="username" value="javauser"/>
            <property name="password" value="123456"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="com/neuedu/bookstore/mapper/CategoryMapper.xml"/>
      </mappers>
    </configuration>
    
    1. 编写数据操作映射文件 CategoryMapper.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">
    
    <!-- namespace 用于配置映射的数据操作接口,内容是接口的名称 -->
    <mapper namespace="com.neuedu.bookstore.mapper.CategoryMapper">
        <!-- 接口映射文件用于配置接口的方法 -->
        <!-- 
            1. 使用 insert对应sql的insert语句,update对应update语句,delete对应delete语句,select对应select语句
            2. 适应标签的id属性配置接口方法的名称
                                使用 parameterType配置方法的类型
         -->
    
        <insert id="addCategory" parameterType="com.neuedu.bookstore.bean.Category">
            insert into category(name) values(#{name})
        </insert>
    
    </mapper>
    
    
    1. 编写测试代码或业务代码,构造 mybatis 运行环境,并测试数据操作接口
    package test;
    
    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 com.neuedu.bookstore.bean.Category;
    import com.neuedu.bookstore.mapper.CategoryMapper;
    
    public class TestMybatis {
        public static void main(String[] args) {
           
            try {
                //1. 加载 mybatis 运行环境
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                SqlSession session = sqlSessionFactory.openSession();
                
                // 2. 通过 mybatis 代理实例化Mapper 数据操作接口
                CategoryMapper mapper = session.getMapper(CategoryMapper.class);
                
                // 3. 调用接口对象进行数据操作
                Category category = new Category(0, "计算机");
                int count = mapper.addCategory(category);
                session.commit();
                
                // 4.对数据操作结果进行处理、
                if(count == 1) {
                    System.out.println("新增成功.");
                }else {
                    System.out.println("新增失败.");
                }
                
                // 5. 关闭数据库连接
                session.close();
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
    
    

    Mybatis 模糊查询

        <select id="searchByName"  parameterType="com.neuedu.bookstore.bean.Category" 
             resultType="com.neuedu.bookstore.bean.Category">
           <!-- 
              方法一:直接获取参数的名称作为查询的条件,此时是一个精确查询;java代码传参时需要对参数进行构造,在参数两端加上百分号%
              category = new Category(0, "%计算%");           
              select id,name from category where name like #{name}
            -->
    
          <!--
            方法二:编写sql时,在查询条件两端加上百分号
            category = new Category(0, "计算");
           select id,name from category where name like  "%"#{name}"%" 
           -->
            
            
          <!-- 
           方法三:编写sql时,在查询条件两端使用concat单行函数加上百分号
           select id,name from category where name like concat(concat("%",#{name}),"%")
           -->
           
          <!-- 
          方法四:编写sql时,在查询条件两端使用bind标签加上百分号
          select id,name from category where name 
          <bind name="pattern" value="'%'+name+'%'"/> 
          like #{pattern} 
          -->
        </select>
    
    

    相关文章

      网友评论

          本文标题:Java实训(4) -- MyBatis初学习 -- 2018-

          本文链接:https://www.haomeiwen.com/subject/enzasftx.html