Java后端开发——Mybatis实验

这篇具有很好参考价值的文章主要介绍了Java后端开发——Mybatis实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java后端开发——Mybatis实验

一、MyBatis入门程序

1.创建工程

在Eclipse中,创建名称为mybatis的工程
Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

2.引入相关依赖

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

3.数据库准备

create database mybatis charset=utf8;

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

4.编写数据库连接信息配置文件

在项目的src目录下创建数据库连接的配置文件,这里将其命名为db.properties,在该文件中配置数据库连接的参数。

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

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

5.创建POJO实体

在项目的src/main/java目录下创建com.javaweb.pojo包,在com.javaweb.pojo包下创建User类,该类用于封装User对象的属性。

package com.javaweb.pojo;

public class Customer {
private Integer id; private String username; // 主键ID、客户名称
private String jobs; private String phone; // 职业、电话
// 省略getter/setter

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

public Integer getId() {
return id;
}

public void setId(Integer 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;
}
}

6.编写核心配置文件和映射文件

在项目的src目录下创建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 核心根标签-->
<configuration>
<!--引入数据库连接的配置文件-->
<properties resource="db.properties"/>
<!--environments配置数据库环境,环境可以有多个。default属性指定使用的是哪个-->
<environments default="mysql">
<!--environment配置数据库环境 id属性唯一标识-->
<environment id="mysql">
<!-- transactionManager事务管理。 type属性,采用JDBC默认的事务-->
<transactionManager type="JDBC"></transactionManager>
<!-- dataSource数据源信息 type属性 连接池-->
<dataSource type="POOLED">
<!-- property获取数据库连接的配置信息 -->
<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引入映射配置文件 -->
<mappers>
<!-- mapper 引入指定的映射配置文件 resource属性指定映射配置文件的名称 -->
<mapper resource="com/javaweb/dao/CustomerMapper.xml"></mapper>
</mappers>
</configuration>

二、MyBatis案例:员工管理系统

1.在mybatis数据库中创建employee表

并在employee表中插入几条数据

use mybatis;
create table user(
    id int primary key auto_increment,
    name varchar(20) not null,
    age int not null
);
insert into user values(null,'张三',20),(null,'李四',18);

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

2.创建持久化类Employee

并在类中声明id(编号)、name(姓名)、age(年龄)和position(职位)属性,以及属性对应的getter/setter方法

package com.javaweb.bean;
public class Employee {
private Integer id; 
private String name; 
private Integer age; 
private String position; 
// 省略getter/setter方法
@Override
public String toString() {
return "Employee{" + "id=" + id + ", name=" + name +
", age=" + age + ", position=" + position +'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public String getPosition() {
return position;
}

public void setPosition(String position) {
this.position = position;
}
}

3.编写映射文件

创建映射文件EmployeeMapper.xml,该文件主要用于实现SQL语句和Java对象之间的映射。

<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.javaweb.mapper.EmployeeMapper">
<select id="findById" parameterType="Integer" resultType="com.javaweb.pojo.Employee"> 
select * from employee where id = #{id}
</select>
<insert id="add" parameterType="com.javaweb.pojo.Employee">
insert into employee(id,name,age,position) values (#{id},#{name},#{age},#{position})
</insert>
</mapper> 

4.添加映射文件路径配置。

在mybatis-config.xml映射文件的元素下添加EmployeeMapper.xml映射文件路径的配置。

<mapper 
resource="com/javaweb/mapper/EmployeeMapper.xml">
</mapper>

5.编写MyBatisUtils工具类

创建MyBatisUtils工具类,该类用于封装读取配置文件信息的代码。

public class MyBatisUtils {
      private static SqlSessionFactory sqlSessionFactory = null;
      static {	try {
	// 使用MyBatis提供的Resources类加载MyBatis的配置文件
	Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
	// 构建SqlSessionFactory工厂
	sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
      } catch (Exception e) { e.printStackTrace();}
      }
       public static SqlSession getSession() {//获取SqlSession对象的静态方法
	return sqlSessionFactory.openSession();
      }
} 

6.编写测试类

(1)在项目src/test/java目录下创建Test包,在Test包下创建MyBatisTest测试类,用于程序测试。在MyBatisTest测试类中添加findByIdTest()方法,用于根据id查询员工信息。
(2)在MyBatisTest测试类中添加insertTest()方法,用于插入员工信息。
(3)在MyBatisTest测试类中添加updateTest()方法,用于更新员工信息。
(4)在MyBatisTest测试类中添加deleteTest()方法,用于删除员工信息。

package com.javaweb.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import com.javaweb.pojo.Customer;
import com.javaweb.utils.MybatisUtils;

class MyBatisTest {

	@Test
	public void findCustomerByNameAndJobsTest() {
	SqlSession session = MybatisUtils.getSession();
	Customer customer = new Customer();customer.setUsername("jack");customer.setJobs("teacher");
	List<Customer> customers = session.selectList("com.javaweb.dao.CustomerMapper.findCustomerByNameAndJobs",customer);
	for (Customer customer2 : customers) {
	    System.out.println(customer2);
	}
	session.close();
	}
	
	@Test
	public void findCustomerByNameOrJobsTest() {
	SqlSession session = MybatisUtils.getSession();
	Customer customer = new Customer();
	customer.setUsername("tom");
	customer.setJobs("teacher");
	List<Customer> customers = session.selectList("com.javaweb.dao.CustomerMapper.findCustomerByNameOrJobs",customer);
	for (Customer customer2 : customers) {
		System.out.println(customer2);
	}
	session.close();
	}
	@Test
	public void findCustomerByNameAndJobs2Test() {
	SqlSession session = MybatisUtils.getSession();
	Customer customer = new Customer();customer.setUsername("jack");customer.setJobs("teacher");
	List<Customer> customers = session.selectList("com.javaweb.dao.CustomerMapper.findCustomerByNameAndJobs2",customer);
	for (Customer customer2 : customers) {
	    System.out.println(customer2);
	}
	session.close();
	}
	@Test
	public void findCustomerByNameAndJobs3Test() {
	SqlSession session = MybatisUtils.getSession();
	Customer customer = new Customer();customer.setUsername("jack");customer.setJobs("teacher");
	List<Customer> customers = session.selectList("com.javaweb.dao.CustomerMapper.findCustomerByNameAndJobs3",customer);
	for (Customer customer2 : customers) {
	    System.out.println(customer2);
	}
	session.close();
	}
	@Test
	public void updateCustomerBySetTest() {		
	    SqlSession sqlSession = MybatisUtils.getSession();
	    Customer customer = new Customer();  
	    customer.setId(3);
	    customer.setPhone("13311111234");
	    int rows = sqlSession.update("com.javaweb.dao"
	            + ".CustomerMapper.updateCustomerBySet", customer);
	    if(rows > 0) {System.out.println("您成功修改了"+rows+"条数据!");
	    } else { System.out.println("执行修改操作失败!!!");
	    }sqlSession.commit();sqlSession.close();
	}
	@Test
	public void findByArrayTest() {
	     SqlSession session = MybatisUtils.getSession(); 
	     Integer[] roleIds = {2,3}; // 创建数组,封装查询id
	     List<Customer> customers =       session.selectList("com.javaweb.dao.CustomerMapper.findByArray", roleIds);	
	     for (Customer customer : customers) {
	           System.out.println(customer);
	      }
	       session.close();
	}

}

三、动态SQL测试实验

1.创建映射文件CustomerMapper.xml

在映射文件中,根据客户姓名和年龄组合条件查询客户信息,使用元素编写该组合条件的动态SQL,测试并显示结果。

<select id="findCustomerByNameOrJobs" parameterType="com.javaweb.pojo.Customer"
resultType="com.javaweb.pojo.Customer">
select * from t_customer where 1=1
<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>
</select>

2.在映射文件CustomerMapper.xml中

添加使用、、元素执行动态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">
<mapper namespace="com.javaweb.dao.CustomerMapper">
<!-- <if>元素使用 -->
<select id="findCustomerByNameAndJobs" parameterType="com.javaweb.pojo.Customer"
resultType="com.javaweb.pojo.Customer">
select * from t_customer where 1=1 
<if test="username !=null and username !=''">
and username like concat('%',#{username}, '%')
</if>
<if test="jobs !=null and jobs !=''">
and jobs= #{jobs}
</if> 
</select>
<!--<choose>(<when><otherwise>)元素使用 -->
<select id="findCustomerByNameOrJobs" parameterType="com.javaweb.pojo.Customer"
resultType="com.javaweb.pojo.Customer">
select * from t_customer where 1=1
<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>
</select>
<update id="updateCustomerBySet" parameterType="com.javaweb.pojo.Customer">update t_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>

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

3.添加使用元素执行动态SQL元素

在映射文件CustomerMapper.xml中,添加使用元素执行动态SQL元素,测试并显示结果。

<select id="findCustomerByNameAndJobs2" 
          parameterType="com.javaweb.pojo.Customer"
          resultType="com.javaweb.pojo.Customer">
    select * from t_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>

4.添加使用元素执行动态SQL元素

在映射文件CustomerMapper.xml中,添加使用元素执行动态SQL元素,测试并显示结果。

<select id="findCustomerByNameAndJobs3" 
          parameterType="com.javaweb.pojo.Customer"
          resultType="com.javaweb.pojo.Customer">
    select * from t_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>

5.添加使用元素执行更新操作的动态SQL

在映射文件CustomerMapper.xml中,添加使用元素执行更新操作的动态SQL。

<update id="updateCustomerBySet" parameterType="com.itheima.pojo.Customer">update t_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> 

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

四、复杂查询操作实验

1.添加使用元素迭代数组

在映射文件CustomerMapper.xml中,添加使用元素迭代数组执行批量查询操作的动态SQL。

<select id="findByList" parameterType="java.util.Arrays"
         resultType="com.javaweb.pojo.Customer">
    select * from t_customer where id in
    <foreach item="id" index="index" collection="list" 
               open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

2.添加使用元素迭代List集合执行批量查询操作的动态SQL

在映射文件CustomerMapper.xml中,添加使用元素迭代List集合执行批量查询操作的动态SQL。

<select id="findByList" parameterType="java.util.Arrays"
         resultType="com.javaweb.pojo.Customer">
    select * from t_customer where id in
    <foreach item="id" index="index" collection="list" 
               open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据

3.添加使用元素迭代Map集合执行批量查询操作的动态SQL。

在映射文件CustomerMapper.xml中,添加使用元素迭代Map集合执行批量查询操作的动态SQL。

<select id="findByMap" parameterType="java.util.Map"
        resultType="com.javaweb.pojo.Customer">
    select * from t_customer where jobs=#{jobs} and id in
    <foreach item="roleMap" index="index" collection="id" open="(" 	separator="," close=")"> #{roleMap}
    </foreach>
</select>

Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据
Java后端开发——Mybatis实验,JAVA后端开发,大数据,java,mybatis,开发语言,后端,大数据文章来源地址https://www.toymoban.com/news/detail-821179.html

到了这里,关于Java后端开发——Mybatis实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入解析Mybatis-Plus框架:简化Java持久层开发(二)

    博客地址: CSDN :https://blog.csdn.net/powerbiubiu 本章节开始从实际的应用场景,来讲解Mybatis-Plus常用的一些操作,根据业务场景来进行增删改查的功能,首先先搭建一个项目。 1 搭建数据库 根据业务场景,设定了用户,角色,菜单三张表,同时还有用户与角色关联表,角色与菜

    2024年02月20日
    浏览(69)
  • Java开发之框架(spring、springmvc、springboot、mybatis)【面试篇 完结版】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文主要记录spring的单例bean、切面编程AOP、spring事务、循环依赖、常见注解等 提示:以下是本篇文章正文内容,下面案例可供参考 ① 问题引入 Spring框架中的bean是单例的 singleton :bean在每个Spring IOC容

    2024年02月07日
    浏览(54)
  • Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

    Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果。 本篇博客将介绍如何使用Spring-Boot快速搭建一

    2024年01月17日
    浏览(56)
  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(51)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第五天)MyBatis的注解开发

    ​ 昨天我们深入学习了 MyBatis多表之间的关联映射,了解掌握了一对一关联映射,一对多关联映射,嵌套查询方式以及嵌套结果方式,掌握了缓存机制的一级缓存,二级缓存等概念,也使用了代码进行复现理解 。但是都是基于XML配置文件的方式来实现的,现在我们要学习一下

    2024年02月11日
    浏览(64)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习

    一、当前的主流框架介绍(这就是后期我会发出来的框架学习) Spring框架 ​ Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的 ,其主要优势之一就是分层架构。 Spring提供了更完善的开发环境,可以为POJO(Plain Ordinary Java Object,普通Java对象 )对象提供企业级

    2024年02月12日
    浏览(58)
  • java springboot整合MyBatis-Plus 多用点Plus支持一下国人开发的东西吧

    文章java springboot整合MyBatis做数据库查询操作讲述了boot项目整合MyBatis的操作方法 但现在就还有一个 MyBatis-Plus Plus是国内整合的一个技术 国内的很多人会喜欢用 特别是一些中小型公司 他们用着会比较舒服 好 然后我们打开idea 创建一个项目 选择 Spring Initializr 工程 调一下项目

    2024年02月09日
    浏览(60)
  • 云计算的西安工商学院学报稿件管理系统开发(JSP+java+springmvc+mysql+MyBatis)

    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。   随着信息技术的快速发展,云计算作为一种新型的计算模式,为数据存储和处理提供了高效、灵活的解决方案。学术期刊作为科研成果发布的重要渠道,其稿件管理系统的效率

    2024年03月14日
    浏览(51)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

    上一篇我们的项目搭建好了,也写了简答的Junit测试类进行测试,可以正确映射到数据库中。 那么这篇文章来深入学习一下以下几个点: 了解 MyBatis的核心对象SqlSessionFactoryBuilder 以及它的作用 掌握MyBatis核心配置文件以及元素的使用 。 掌握MyBatis映射文件及其元素的使用 。

    2024年02月11日
    浏览(68)
  • MyBatis实现 Java 对象和数据库中日期类型之间的转换(超详细)

    数据库存储的时间字段的类型是datetime Java实体类的时间字段类型是Date 需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“ 1、定义resultMap 定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如

    2024年02月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包