我在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”

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