芜湖北京网站建设,网站建设和维护,导航网站 cms,html样式模板文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例#xff1a;员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee… 文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee3.编写映射文件4.添加映射文件路径配置。5.编写MyBatisUtils工具类6.编写测试类 三、动态SQL测试实验1.创建映射文件CustomerMapper.xml2.在映射文件CustomerMapper.xml中3.添加使用where元素执行动态SQL元素4.添加使用trim元素执行动态SQL元素5.添加使用set元素执行更新操作的动态SQL 四、复杂查询操作实验1.添加使用foreach元素迭代数组2.添加使用foreach元素迭代List集合执行批量查询操作的动态SQL3.添加使用foreach元素迭代Map集合执行批量查询操作的动态SQL。 Java后端开发——Mybatis实验
一、MyBatis入门程序
1.创建工程
在Eclipse中创建名称为mybatis的工程
2.引入相关依赖 3.数据库准备
create database mybatis charsetutf8;4.编写数据库连接信息配置文件
在项目的src目录下创建数据库连接的配置文件这里将其命名为db.properties在该文件中配置数据库连接的参数。
mysql.drivercom.mysql.jdbc.Driver
mysql.urljdbc:mysql://localhost:3306/mybatis?serverTimezoneUTC
characterEncodingutf8useUnicodetrueuseSSLfalse
mysql.usernameroot
mysql.passwordroot5.创建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/setterOverride
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 version1.0 encodingUTF-8 ?
!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd
!--configuration 核心根标签--
configuration
!--引入数据库连接的配置文件--
properties resourcedb.properties/
!--environments配置数据库环境环境可以有多个。default属性指定使用的是哪个--
environments defaultmysql
!--environment配置数据库环境 id属性唯一标识--
environment idmysql
!-- transactionManager事务管理。 type属性采用JDBC默认的事务--
transactionManager typeJDBC/transactionManager
!-- dataSource数据源信息 type属性 连接池--
dataSource typePOOLED
!-- property获取数据库连接的配置信息 --
property namedriver value${mysql.driver} /
property nameurl value${mysql.url} /
property nameusername value${mysql.username} /
property namepassword value${mysql.password} /
/dataSource
/environment
/environments
!-- mappers引入映射配置文件 --
mappers
!-- mapper 引入指定的映射配置文件 resource属性指定映射配置文件的名称 --
mapper resourcecom/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);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 version1.0 encodingUTF-8?
mapper namespacecom.javaweb.mapper.EmployeeMapper
select idfindById parameterTypeInteger resultTypecom.javaweb.pojo.Employee
select * from employee where id #{id}
/select
insert idadd parameterTypecom.javaweb.pojo.Employee
insert into employee(id,name,age,position) values (#{id},#{name},#{age},#{position})
/insert
/mapper 4.添加映射文件路径配置。
在mybatis-config.xml映射文件的元素下添加EmployeeMapper.xml映射文件路径的配置。
mapper
resourcecom/javaweb/mapper/EmployeeMapper.xml
/mapper5.编写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 {Testpublic void findCustomerByNameAndJobsTest() {SqlSession session MybatisUtils.getSession();Customer customer new Customer();customer.setUsername(jack);customer.setJobs(teacher);ListCustomer customers session.selectList(com.javaweb.dao.CustomerMapper.findCustomerByNameAndJobs,customer);for (Customer customer2 : customers) {System.out.println(customer2);}session.close();}Testpublic void findCustomerByNameOrJobsTest() {SqlSession session MybatisUtils.getSession();Customer customer new Customer();customer.setUsername(tom);customer.setJobs(teacher);ListCustomer customers session.selectList(com.javaweb.dao.CustomerMapper.findCustomerByNameOrJobs,customer);for (Customer customer2 : customers) {System.out.println(customer2);}session.close();}Testpublic void findCustomerByNameAndJobs2Test() {SqlSession session MybatisUtils.getSession();Customer customer new Customer();customer.setUsername(jack);customer.setJobs(teacher);ListCustomer customers session.selectList(com.javaweb.dao.CustomerMapper.findCustomerByNameAndJobs2,customer);for (Customer customer2 : customers) {System.out.println(customer2);}session.close();}Testpublic void findCustomerByNameAndJobs3Test() {SqlSession session MybatisUtils.getSession();Customer customer new Customer();customer.setUsername(jack);customer.setJobs(teacher);ListCustomer customers session.selectList(com.javaweb.dao.CustomerMapper.findCustomerByNameAndJobs3,customer);for (Customer customer2 : customers) {System.out.println(customer2);}session.close();}Testpublic 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();}Testpublic void findByArrayTest() {SqlSession session MybatisUtils.getSession(); Integer[] roleIds {2,3}; // 创建数组封装查询idListCustomer 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 idfindCustomerByNameOrJobs parameterTypecom.javaweb.pojo.Customer
resultTypecom.javaweb.pojo.Customer
select * from t_customer where 11
choose
!--条件判断 --
when testusername !null and username !
and username like concat(%,#{username}, %)
/when
when testjobs !null and jobs !
and jobs #{jobs}
/when
otherwise
and phone is not null
/otherwise
/choose
/select2.在映射文件CustomerMapper.xml中
添加使用、、元素执行动态SQL,测试并显示结果。
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper
PUBLIC -//mybatis.org//DTD Mapper 3.0//EN
http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.javaweb.dao.CustomerMapper
!-- if元素使用 --
select idfindCustomerByNameAndJobs parameterTypecom.javaweb.pojo.Customer
resultTypecom.javaweb.pojo.Customer
select * from t_customer where 11
if testusername !null and username !
and username like concat(%,#{username}, %)
/if
if testjobs !null and jobs !
and jobs #{jobs}
/if
/select
!--choose(when、otherwise)元素使用 --
select idfindCustomerByNameOrJobs parameterTypecom.javaweb.pojo.Customer
resultTypecom.javaweb.pojo.Customer
select * from t_customer where 11
choose
!--条件判断 --
when testusername !null and username !
and username like concat(%,#{username}, %)
/when
when testjobs !null and jobs !
and jobs #{jobs}
/when
otherwise
and phone is not null
/otherwise
/choose
/select
update idupdateCustomerBySet parameterTypecom.javaweb.pojo.Customerupdate t_customer
set
if testusername !null and username !
username#{username},/if
if testjobs !null and jobs ! jobs#{jobs},/if
if testphone !null and phone !phone#{phone},/if
/set where id#{id}
/update
/mapper3.添加使用元素执行动态SQL元素
在映射文件CustomerMapper.xml中添加使用元素执行动态SQL元素,测试并显示结果。
select idfindCustomerByNameAndJobs2 parameterTypecom.javaweb.pojo.CustomerresultTypecom.javaweb.pojo.Customerselect * from t_customerwhereif testusername !null and username !and username like concat(%,#{username}, %)/ifif testjobs !null and jobs !and jobs #{jobs}/if/where/select4.添加使用元素执行动态SQL元素
在映射文件CustomerMapper.xml中添加使用元素执行动态SQL元素,测试并显示结果。
select idfindCustomerByNameAndJobs3 parameterTypecom.javaweb.pojo.CustomerresultTypecom.javaweb.pojo.Customerselect * from t_customertrim prefixwhere prefixOverridesand if testusername !null and username !and username like concat(%,#{username}, %)/ifif testjobs !null and jobs !and jobs #{jobs}/if/trim
/select5.添加使用元素执行更新操作的动态SQL
在映射文件CustomerMapper.xml中添加使用元素执行更新操作的动态SQL。
update idupdateCustomerBySet parameterTypecom.itheima.pojo.Customerupdate t_customer setif testusername !null and username !username#{username},/ifif testjobs !null and jobs ! jobs#{jobs},/ifif testphone !null and phone !phone#{phone},/if/set where id#{id}
/update 四、复杂查询操作实验
1.添加使用元素迭代数组
在映射文件CustomerMapper.xml中添加使用元素迭代数组执行批量查询操作的动态SQL。
select idfindByList parameterTypejava.util.ArraysresultTypecom.javaweb.pojo.Customerselect * from t_customer where id inforeach itemid indexindex collectionlist open( separator, close)#{id}/foreach
/select2.添加使用元素迭代List集合执行批量查询操作的动态SQL
在映射文件CustomerMapper.xml中添加使用元素迭代List集合执行批量查询操作的动态SQL。
select idfindByList parameterTypejava.util.ArraysresultTypecom.javaweb.pojo.Customerselect * from t_customer where id inforeach itemid indexindex collectionlist open( separator, close)#{id}/foreach
/select3.添加使用元素迭代Map集合执行批量查询操作的动态SQL。
在映射文件CustomerMapper.xml中添加使用元素迭代Map集合执行批量查询操作的动态SQL。
select idfindByMap parameterTypejava.util.MapresultTypecom.javaweb.pojo.Customerselect * from t_customer where jobs#{jobs} and id inforeach itemroleMap indexindex collectionid open( separator, close) #{roleMap}/foreach
/select