一:实验目的
1、了解Mybatis基础知识;
2、理解Mybatis工作原理
3、掌握Mybatis基础程序编写及核心配置。
二:实验内容
首先在数据库中创建学小汽车表:
car表
属性 | 数据类型 | 长度 | 是否主键 | 可空性 | 备注 |
carNumber | char | 10 | 主键 | 否 | 车牌号 |
brand | varchar | 30 | 品牌 | ||
owner | char | 10 | 否 | 车主 | |
purchaseDate | date | 购置日期 | |||
telephone | varchar | 20 | 车主电话 |
# 创建表:
CREATE TABLE car(
carNumber VARCHAR(20) PRIMARY KEY AUTO_INCREMENT,
brand VARCHAR(255),
OWNER VARCHAR(40),
purchaseDate DATE,
telephone VARCHAR(20)
);
然后基于Mybatis实现以下功能;
1、向car表添加3条记录;
2、基于车牌号的精确查询和基于姓名的模糊查询;
3、修改某车主的电话号码;
4、根据车牌号删除相关信息。
# 创建Car类:
import java.util.Date;
public class Car {
private String carNumber;
private String brand;
private String owner;
private String purchaseDate;
private String telephone;
@Override
public String toString() {
return "Car{" +
"carNumber='" + carNumber + '\'' +
", brand='" + brand + '\'' +
", owner='" + owner + '\'' +
", purchaseDate=" + purchaseDate +
", telephone='" + telephone + '\'' +
'}';
}
public String getCarNumber() {
return carNumber;
}
public void setCarNumber(String carNumber) {
this.carNumber = carNumber;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getPurchaseDate() {
return purchaseDate;
}
public void setPurchaseDate(String purchaseDate) {
this.purchaseDate = purchaseDate;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
}
# CarMapper.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="carMapper">
<!--插入操作-->
<insert id="add" parameterType="Car">
insert into car values(#{carNumber},#{brand},#{owner},#{purchaseDate},#{telephone})
</insert>
<!--查询操作-->
<!--基于车牌号的精确查询-->
<select id="findByCarNumber" resultType="car" parameterType="String">
select * from car where carNumber=#{carNumber}
</select>
<!--基于姓名的模糊查询-->
<select id="findByOwnerName" resultType="car" parameterType="String">
select * from car where owner like #{owner}
</select>
<!--修改某位车主的电话号码操作-->
<update id="update" parameterType="car">
update car set telephone=#{telephone} where owner=#{owner}
</update>
<!--根据车牌号删除相关信息-->
<delete id="delete" parameterType="String">
delete from car where carNumber=#{carNumber}
</delete>
</mapper>
# 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=123456
# 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"/>
<!--自定义别名-->
<typeAliases>
<typeAlias type="Car" alias="car"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<!--数据库连接相关配置,db.properties文件中的内容-->
<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="CarMapper.xml"></mapper>
</mappers>
</configuration>
# 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.itheima</groupId>
<artifactId>itheima_mybatis_quick</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
</plugins>
</build>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
# 创建测试类MybatisTest:
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.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class MyBatisTest {
public static void main(String[] args) throws Exception{
//获取核心配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//获取session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//获取session回话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
Car car = new Car();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请选择操作选项:\n " +
"1.添加汽车记录,2.基车牌号的精准查询信息,3.基于车主姓名的模糊查询信息,4.修改车主电话号码,5.根据车牌号删除信息6.退出");
String str = sc.next();
if (str.equals("6")) {
System.out.println("退出成功!");
break;
}
switch(str) {
case "1":
System.out.println("请输入汽车属性!");
System.out.println("请输入车牌号:");
car.setCarNumber(sc.next());
System.out.println("请输入品牌:");
car.setBrand(sc.next());
System.out.println("请输入车主名:");
car.setOwner(sc.next());
String purchaseDate = null;
while (true){
System.out.println("请输入购置日期(ep:2013-04-17):");
purchaseDate = sc.next();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = format.parse(purchaseDate);
break;
} catch (ParseException e) {
System.out.println("不合法的输入,请重新输入!");
e.printStackTrace();
}
}
car.setPurchaseDate(purchaseDate);
System.out.println("请输入车主电话:");
car.setTelephone(sc.next());
//执行操作 参数:namespace + id
sqlSession.insert("carMapper.add", car);
//mybatis执行更新操作,提交事务
sqlSession.commit();
continue;
case "2":
System.out.println("请输入需要查询的车牌号:");
//执行操作 参数:namespace + id
Car car1 = sqlSession.selectOne("carMapper.findByCarNumber", sc.next());
//打印数据
System.out.println(car1);
continue;
case "3":
System.out.println("请输入需要查询的车主姓氏:");
//执行操作 参数:namespace + id
Car car2 = sqlSession.selectOne("carMapper.findByOwnerName", sc.next()+"%");
//打印数据
System.out.println(car2);
continue;
case "4":
//模拟car对象
Car car3 = new Car();
System.out.println("请输入车主名字:");
car.setOwner(sc.next());
System.out.println("电话号码更改为:");
car.setTelephone(sc.next());
//执行操作 参数:namespace + id
sqlSession.update("carMapper.update", car3);
//mybatis执行更新操作,提交事务
sqlSession.commit();
continue;
case "5":
System.out.println("请输入需要删除的车牌号:");
//执行操作 参数:namespace + id
sqlSession.delete("carMapper.delete", sc.next());
//mybatis执行更新操作,提交事务
sqlSession.commit();
continue;
default:
System.out.println("输入错误,请重新输入!");
continue;
}
}
//释放资源
sqlSession.close();
}
}
# 运行结果图: