项目结构在操作系统的基础上,将原生 JDBC 引入 MyBatis 框架
对 MyBatis 的理解不深刻,感觉比原生更麻烦了,估计还需要后续的进一步学习才能体会到 MyBatis 的优势吧
|warship-demo // 模块 |--|src // 源代码和测试代码目录 |--|--|main // 源代码目录 |--|--|--|java // 源代码Java文件目录 |--|--|--|resources // 源代码配置文件目录 |--|--|test // 测试代码目录 |--|--|--|java // 测试Java文件目录 |--|pom.xml // 项目核心配置文件源代码和测试代码
按照编写顺序
pom.xml
pom.xml
4.0.0 com.cookies warship-demo 1.0-SNAPSHOT 17 17 org.mybatis mybatis 3.5.10 mysql mysql-connector-java 8.0.29 org.slf4j slf4j-api 1.7.36 ch.qos.logback logback-classic 1.2.11 ch.qos.logback logback-core 1.2.11
mybatis-config.xml
src/main/resources/mybatis-config.xml
logback.xml
src/main/resources/logback.xml
[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n
Warship.java
src/main/java/com/cookies/pojo/Warship.java
package com.cookies.pojo;
public class Warship {
private int id;
private String englishName;
private String chineseName;
private String camp;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEnglishName() {
return englishName;
}
public void setEnglishName(String englishName) {
this.englishName = englishName;
}
public String getChineseName() {
return chineseName;
}
public void setChineseName(String chineseName) {
this.chineseName = chineseName;
}
public String getCamp() {
return camp;
}
public void setCamp(String camp) {
this.camp = camp;
}
@Override
public String toString() {
return "Warship{" +
"id=" + id +
", englishName='" + englishName + ''' +
", chineseName='" + chineseName + ''' +
", camp='" + camp + ''' +
'}';
}
}
WarshipMapper.java
src/main/java/com/cookies/mapper/WarshipMapper.java
package com.cookies.mapper;
import com.cookies.pojo.Warship;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface WarshipMapper {
// 查询所有舰娘数据
List selectAll();
// 按照条件进行查询
List selectByConditions(
@Param("id") int id,
@Param("englishName") String englishName,
@Param("chineseName") String chineseName,
@Param("camp") String camp
);
// 增加舰娘数据
void add(Warship warship);
// 删除舰娘数据
void deleteById(int id);
// 修改舰娘数据
void update(
@Param("id") int id,
@Param("englishName") String englishName,
@Param("chineseName") String chineseName,
@Param("camp") String camp
);
}
WarshipMapper.xml
src/main/resources/com/cookies/mapper/WarshipMapper.xml
MyBatisTest.java
src/test/java/com/cookies/test/MyBatisTest.java
package com.cookies.test;
import com.cookies.mapper.WarshipMapper;
import com.cookies.pojo.Warship;
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.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Scanner;
public class MyBatisTest {
public static void main(String[] args) throws IOException {
// 1.加载MyBatis的配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 2.获取SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(true);
// 3.获取Mapper接口
WarshipMapper warshipMapper = sqlSession.getMapper(WarshipMapper.class);
// 4.执行方法
warshipManagementSystem(sqlSession, warshipMapper);
}
private static void warshipManagementSystem(SqlSession sqlSession, WarshipMapper warshipMapper) {
Scanner sc = new Scanner(System.in);
System.out.println("---------------------");
System.out.println("---------------------");
System.out.println("欢迎进入管理系统,指挥官");
System.out.println("1.增加舰娘数据");
System.out.println("2.删除舰娘数据");
System.out.println("3.修改舰娘数据");
System.out.println("4.查询舰娘数据");
System.out.println("5.退出");
System.out.println("请输入下一步操作");
int chooseNumber = sc.nextInt();
switch (chooseNumber) {
case 1 -> createWarship(sqlSession, warshipMapper);
case 2 -> deleteWarship(sqlSession, warshipMapper);
case 3 -> updateWarship(sqlSession, warshipMapper);
case 4 -> readWarship(sqlSession, warshipMapper);
case 5 -> {
// 5.释放资源
sqlSession.close();
System.exit(0);
}
}
}
private static void readWarship(SqlSession sqlSession, WarshipMapper warshipMapper) {
Scanner sc = new Scanner(System.in);
System.out.println("---------------------");
System.out.println("查询舰娘数据");
System.out.println("1.查询所有舰娘数据");
System.out.println("2.按照条件进行查询");
System.out.println("请输入下一步操作");
int chooseNumber = sc.nextInt();
switch (chooseNumber) {
case 1 -> {
System.out.println("---------------------");
System.out.println("所有舰娘数据:");
List warships = warshipMapper.selectAll();
System.out.println(warships);
warshipManagementSystem(sqlSession, warshipMapper);
}
case 2 -> {
System.out.println("---------------------");
System.out.println("按照条件进行查询(如果不知道该条件,数值可填0,字符串可填未知)");
System.out.print("舰娘的编号:");
int id = sc.nextInt();
System.out.print("舰娘的英文名:");
String englishName = sc.next();
System.out.print("舰娘的中文名:");
String chineseName = sc.next();
System.out.print("舰娘的阵营:");
String camp = sc.next();
List warships = warshipMapper.selectByConditions(id,englishName,chineseName,camp);
System.out.println(warships);
warshipManagementSystem(sqlSession, warshipMapper);
}
}
}
private static void updateWarship(SqlSession sqlSession, WarshipMapper warshipMapper) {
System.out.println("---------------------");
System.out.println("修改舰娘数据");
Scanner sc = new Scanner(System.in);
System.out.print("需要修改的id:");
int id = sc.nextInt();
System.out.print("舰娘的英文名:");
String englishName = sc.next();
System.out.print("舰娘的中文名:");
String chineseName = sc.next();
System.out.print("舰娘的阵营:");
String camp = sc.next();
warshipMapper.update(id, englishName, chineseName, camp);
warshipManagementSystem(sqlSession, warshipMapper);
}
private static void deleteWarship(SqlSession sqlSession, WarshipMapper warshipMapper) {
System.out.println("---------------------");
System.out.println("删除舰娘数据");
Scanner sc = new Scanner(System.in);
System.out.print("需要删除的id:");
int id = sc.nextInt();
warshipMapper.deleteById(id);
warshipManagementSystem(sqlSession, warshipMapper);
}
private static void createWarship(SqlSession sqlSession, WarshipMapper warshipMapper) {
Scanner sc = new Scanner(System.in);
System.out.println("---------------------");
System.out.println("增加舰娘数据");
System.out.print("舰娘的英文名:");
String englishName = sc.next();
System.out.print("舰娘的中文名:");
String chineseName = sc.next();
System.out.print("舰娘的阵营:");
String camp = sc.next();
Warship warship = new Warship();
warship.setEnglishName(englishName);
warship.setChineseName(chineseName);
warship.setCamp(camp);
warshipMapper.add(warship);
warshipManagementSystem(sqlSession, warshipMapper);
}
}



