MyBatis创建第二个项目

Mysql文件配置

/*
Navicat Premium Data Transfer

Source Server         : Mybatis
Source Server Type   : MySQL
Source Server Version : 50528
Source Host           : localhost:3306
Source Schema         : mybatis

Target Server Type   : MySQL
Target Server Version : 50528
File Encoding         : 65001

Date: 14/03/2022 18:09:01
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 `pwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '张三', '123');
INSERT INTO `user` VALUES (2, '李四', '236');
INSERT INTO `user` VALUES (3, '王五', '456');
INSERT INTO `user` VALUES (5, '法外狂徒', '478');

SET FOREIGN_KEY_CHECKS = 1;

配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.wfy</groupId>
   <artifactId>MybatisDemo</artifactId>
   <version>1.0-SNAPSHOT</version>

   <properties>
       <maven.compiler.source>8</maven.compiler.source>
       <maven.compiler.target>8</maven.compiler.target>
   </properties>
   <dependencies>
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.2</version>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.11</version>
       </dependency>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
           <scope>test</scope>
       </dependency>
   </dependencies>
   <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>true</filtering>
           </resource>
       </resources>
   </build>
</project>

创建数据库连接信息配置文件 db.properties

mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&\
characterEncoding=utf8&useUnicode=true&useSSL=false
mysql.username=root
mysql.password=root

创建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>
   <properties resource="db.properties"/>
   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="${mysql.driver}"/>
               <property name="url" value="${mysql.url}"/>
               <property name="username" value="${mysql.username}"/>
               <property name="password" value="${mysql.password}"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="com/wfy/mapper/CustomerMapper.xml"/>
   </mappers>
</configuration>

创建pojo实体

package com.wfy.pojo;

public class Customer {
   private  int id ;
   private  String username;
   private  String jobs ;
   private  String phone;

   public  Customer(){

  }

   public Customer(int id, String username, String jobs, String phone) {
       this.id = id;
       this.username = username;
       this.jobs = jobs;
       this.phone = phone;
  }

   public int getId() {
       return id;
  }

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

   public String getUsername() {
       return username;
  }

   public void setUsername(String username) {
       this.username = username;
  }

   public String getJobs() {
       return jobs;
  }

   public void setJobs(String jobs) {
       this.jobs = jobs;
  }

   public String getPhone() {
       return phone;
  }

   public void setPhone(String phone) {
       this.phone = phone;
  }

   @Override
   public String toString() {
       return "Customer{" +
               "id=" + id +
               ", username='" + username + '\'' +
               ", jobs='" + jobs + '\'' +
               ", phone='" + phone + '\'' +
               '}';
  }
}

创建工具类

package com.wfy.utils;
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.Console;
import java.io.InputStream;

public class MyBatisUtils {

   static    SqlSessionFactory factory=null;

   static {
       String configFile= "mybatis-config.xml";
       try {
           InputStream stream= Resources.getResourceAsStream(configFile);
           factory = new SqlSessionFactoryBuilder().build(stream);
      }
       catch (Exception e)
      {
           System.out.println(e);
      }

  }

   public static SqlSession getSession()
  {
       return factory.openSession();
  }
}


创建映射文件CustomerMapper.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">
<mapper namespace="com.wfy.mapper.CustomerMapper">
   <select id="findByNameAndJob" resultType="com.wfy.pojo.Customer" >

select * from customer
<where>
   <if test=" username !=null and username !=''">
      and username like concat ('%',#{username},'%')
   </if>
   <if test=" jobs !=null and jobs !=''">
      and jobs =#{jobs}
   </if>
</where>
   </select>
   <select id="findByNameOrJob" resultType="com.wfy.pojo.Customer">
      select * from customer
       <where>
       <choose>
           <when test="username != null and username !=''">
              and username like concat ('%',#{username},'%')
           </when>
           <when test="jobs !=null and jobs !=''">
              and jobs =#{jobs}
           </when>
           <otherwise>
              and phone is not null
           </otherwise>
       </choose>
       </where>
   </select>

   <select id="findCustomerByNameAndJob" resultType="com.wfy.pojo.Customer">
      select * from customer
<trim prefix="where" prefixOverrides="and">
   <if test="username !=null and username != ''">
      and username like concat('%',#{username},'%')
   </if>
   <if test=" jobs !=null and jobs !=''">
      and jobs =#{jobs}
   </if>
</trim>
   </select>

   <update id="updateCustomerBySet" parameterType="com.wfy.pojo.Customer" >
      update customer
       <set>
           <if test="username!=null and username!=''">
              username=#{username},
           </if>
           <if test="jobs!=null and jobs!=''">
              jobs=#{jobs},
           </if>
           <if test="phone!=null and phone!=''">
              phone=#{phone},
           </if>
       </set>
      where id=#{id}
   </update>

</mapper>

创建接口CustomerMapper

package com.wfy.mapper;

import com.wfy.pojo.Customer;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CustomerMapper {
   List<Customer> findByNameAndJob(@Param("username") String username , @Param("jobs") String jobs) ;

   List<Customer> findByNameOrJob( @Param("username") String username , @Param("jobs") String jobs);

   List<Customer> findCustomerByNameAndJob(@Param("username") String username,@Param("jobs") String jobs);

   int updateCustomerBySet(Customer customer);
}

创建测试类

package Test;

import com.wfy.mapper.CustomerMapper;
import com.wfy.pojo.Customer;
import com.wfy.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class CustomerTest {

   @Test
   public void  TestfindByNameAndJob( ){
  //获取连接
       SqlSession sqlSession = MyBatisUtils.getSession();
       CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
       List<Customer> customers= (List<Customer>) mapper.findByNameAndJob("张三","教师");
       for(Customer customer:customers)
       System.out.println(customer);

       sqlSession.close();
  }

   @Test
   public void findByNameOrJobTest(){
       //获取连接
       SqlSession sqlSession = MyBatisUtils.getSession();
       CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
       List<Customer> customers =mapper.findByNameOrJob("WFY","CEO");
       for (Customer customer : customers) {
           System.out.println(customer);
      }
       sqlSession.close();
  }

   @Test
   public  void findCustomerByNameAndJob(){
       SqlSession sqlSession = MyBatisUtils.getSession();
       CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
       List<Customer> customerList = mapper.findCustomerByNameAndJob("绫小路清隆", "学生");
       for (Customer customer : customerList) {
           System.out.println(customer);
      }
          sqlSession.close();
  }

   @Test
   public  void updateCustomerByTest(){
       SqlSession sqlSession = MyBatisUtils.getSession();
       CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
     int rows = mapper.updateCustomerBySet(new Customer(1,"法外狂徒","律师","12345678"));
if(rows>0){
   System.out.println("成功修改"+rows+"条数据");
}else {
   System.out.println("执行修改操作失败");
}
sqlSession.commit();
sqlSession.close();
  }

}

MyBatis创建第二个项目的更多相关文章

  1. 11. IDEA 在同一工作空间创建多个项目

    1.创建项目 二..创建工作空间 JavaWorkspace 1.File-> New Project -> 创建工作空间 JavaWorkspace,并 顺便创建项目 JavaOne 2 ...

  2. IDEA 在同一工作空间创建多个项目

    1.创建项目 二..创建工作空间 JavaWorkspace 1.File-> New Project -> 创建工作空间 JavaWorkspace,并 顺便创建项目 JavaOne 2 ...

  3. 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战

    mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ...

  4. 快速创建一个springboot项目

    创建一个maven项目(springboot.mybatis-plus) 目标:可以访问ftl页面.对象(json字符串),可以进行单元测试 1.新建一个maven项目,选择模板maven-arche ...

  5. maven系列之二maven项目的创建和maven项目的结构

    maven系列之一简单介绍了maven的基本信息,安装和配置,大家对maven有一个大概的了解,但是在maven项目开发中远远不够,为了进一步了解maven,现在我们介绍maven项目的创建和mave ...

  6. maven安装配置及使用maven创建一个web项目

    今天开始学习使用maven,现在把学习过程中的资料整理在这边. 第一部分.maven安装和配置. http://jingyan.baidu.com/article/295430f136e8e00c7e ...

  7. eclipse中创建一个maven项目

    1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...

  8. IntelliJ IDEA 创建 Maven简单项目

    创建简单Maven项目 使用IDEA提供的Maven工具,根据artifact创建简单Maven项目.根据下图操作,创建Maven项目. 使用IDEA提供的Maven工具创建的Maven简单项目目录结 ...

  9. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

随机推荐

  1. 基于InsightFace的高精度人脸识别,可直接对标虹软

    一.InsightFace简介 InsightFace 是一个 2D/3D 人脸分析项目.InsightFace 的代码是在 MIT 许可下发布的. 对于 acadmic 和商业用途没有限制. 包含注 ...

  2. 对象数组和对象对象数组的for-each循环

    对象数组的声明 类名称 对象数组名[] = null: 对象数组名 = new 类名称[长度] 定义并开辟数组 类名称 对象数据名[] = new 类名称[长度]; 在声明一个对象数组后,必须对每个数 ...

  3. Java8 Stream 的最佳实践

    Java8 Stream 的最佳实践 java8stream提供了对于集合类的流失处理,其具有以下特点: Lazy Evaluation(长度可以无限) 只能使用一次 内部迭代 Lazy Evalua ...

  4. 研发效能|Kubernetes核心技术剖析和DevOps落地经验

    本文主要介绍Kubernetes 的核心组件.架构.服务编排,以及在集群规模.网络&隔离.SideCar.高可用上的一些使用建议,尤其是在CICD中落地,什么是 GitOps. 通过此文可彻底 ...

  5. squareline搭档OneOS图形组件之可视化GUI开发

    LVGL+OneOS! LVGL,一款很火的GUI开发库,一个高度可裁剪.低资源占用.界面美观且易用的嵌入式系统图形库.本身并不依赖特定的硬件平台,任何满足LVGL硬件配置要求的微控制器均可运行LVG ...

  6. Python语言之面向对象

    Python语言之面向对象 前言 面向对象 -- Object Oriented 简写:OO 面向对象设计 -- Object Oriented Design 简写:OOD 面向对象编程 -- Obj ...

  7. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

  8. 2022-07-21 第四组 java之继承

    目录 一.继承 1.概念 2.语法 3.父类成员访问 3.1 子类访问父类的成员变量 3.1.1 子类和父类中不存在同名的成员变量 3.1.2 子类和父类中不存在同名的成员变量 3.2 子类中访问父类 ...

  9. 利用Docker挂载Nginx-rtmp(服务器直播流分发)+FFmpeg(推流)+Vue.js结合Video.js(播放器流播放)来实现实时网络直播

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_75 众所周知,在视频直播领域,有不同的商家提供各种的商业解决方案,其中比较靠谱的服务商有阿里云直播,腾讯云直播,以及又拍云和网易云 ...

  10. FHQ-Treap 简介

    FHQ-treap 即非旋Treap,是一种短小精悍,功能丰富的平衡树. 据说它的效率介于 Treap 和 Splay 之间(可能是我的FHQ常数比较小,跑得比我的Treap还快). 它可以实现 Sp ...