我在Spring中尝试使用Mirage-SQL

前提条件 tí

在WSL的Ubuntu上安装了MySQL,并完成了用户创建、数据库创建、表格创建和插入数据的步骤。

以下是我们创建的数据库的详细信息。

項目値ユーザ名userパスワードpassデータベース名prefectureテーブル名prefecture_listカラム名1prefecture_name(県名)カラム名2area(地方区分)カラム名3population(人口)

创建项目

我会使用Eclipse。
选择“新建” > “Spring Starter项目”。

項目選択値タイプGradle – GroovyパッケージングWarJavaバージョン17言語Java

选择的依存关系

    • Lombok

 

    • Spring Boot Dev Tool(任意)

 

    Spring Web

构建文件.gradle

在build.gradle文件的dependencies部分

    • implementation group: ‘com.mysql’, name: ‘mysql-connector-j’, version: ‘8.0.32’

 

    • implementation group: ‘jp.sf.amateras’, name: ‘mirage’, version: ‘1.2.5’

 

    を追加して、以下のようにする
dependencies {
	implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.0.32'
	implementation group: 'jp.sf.amateras', name: 'mirage', version: '1.2.5'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	annotationProcessor 'org.projectlombok:lombok'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

如果你进行了额外的添加,出于谨慎起见,请执行以下操作。

点击项目。>单击Gradle。>单击刷新Gradle项目。

只需要一个选择,用中文本地化以下内容:

进行DB连接并准备SQL。

在主要的资源文件夹(src/main/resources)中

    • jdbc.properties

 

    • prefectureListAll.sql

 

    の二つを作成
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/prefecture
jdbc.user=user
jdbc.password=pass
SELECT * FROM prefecture_list;

实施

创建实体、仓库、控制器。

import jp.sf.amateras.mirage.annotation.Column;
import jp.sf.amateras.mirage.annotation.Table;
import lombok.Data;

@Data
@Table(name="prefecture_list")
public class Model {
	@Column(name="prefecture_name")
	String prefectureName;
	@Column(name="area")
	int area;
	@Column(name="population")
	int population;
}
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping(path="sample")
public class SampleController {

	@Autowired
	Repository repository;
	
	@GetMapping(path="all")
	public @ResponseBody List<Model> getAll(){
		List<Model> list = repository.selectAll();
		return list;
	}
}
import java.util.List;

public interface Repository {
public List<Model> selectAll();
}
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import jp.sf.amateras.mirage.ClasspathSqlResource;
import jp.sf.amateras.mirage.SqlManager;
import jp.sf.amateras.mirage.SqlResource;
import jp.sf.amateras.mirage.session.Session;
import jp.sf.amateras.mirage.session.SessionFactory;

@Repository
public class SampleRepositoryImpl implements SampleRepository {

	@Override
	public List<Model> selectAll() {
		Map<String, Object> params = new HashMap<>();
		params.put("Status", 0);
		Session session = SessionFactory.getSession();
		session.begin();
		SqlManager sqlManager = session.getSqlManager();
		try {
			SqlResource sql = new ClasspathSqlResource("prefectureListAll.sql");
			List<Model> list = sqlManager.getResultList(Model.class, sql, params);
			session.commit();
			session.release();
			return list;
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
			session.release();
			return null;
		}
	}
}

确认行动

右击项目 > 运行 > 选择 “4 Spring Boot App”

image.png

只要在浏览器上显示如上图像所示,就可以从数据库中获取字段。

bannerAds