首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MyBatis + Jersey 構建 REST 服務:從數據庫到 JSON 接口的完整實戰

     編輯:Java 綜合教學

專案架構

MyBatis 負責數據庫映射,Jersey (JAX-RS) 暴露 REST 接口,返回 JSON 數據。全流程:MySQL → POJO → Mapper → Service → REST Resource → Client。

1. 數據庫腳本

CREATE TABLE `Student` (
  `id` INT(10) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(256) NOT NULL,
  `age` INT(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `Student` VALUES (1, 'zhansan', 20);

2. POJO 實體類

@XmlRootElement  // JAXB 註解,支援 XML/JSON 自動轉換
public class Student {
    private int id;
    private String name;
    private int age;
    // getter/setter 省略
}

3. MyBatis Mapper 映射

<mapper namespace="com.demo.studentMapper">
    <select id="getStudent" parameterType="int" resultType="com.demo.Student">
        SELECT * FROM Student WHERE id = #{id}
    </select>
</mapper>

4. MyBatis 核心配置

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/demo/studentMapper.xml"/>
    </mappers>
</configuration>

5. REST Resource 實現

@Path("/student")
public class StudentResource {
    private static final SqlSessionFactory factory;
    static {
        String resource = "conf.xml";
        InputStream is = StudentResource.class.getClassLoader().getResourceAsStream(resource);
        factory = new SqlSessionFactoryBuilder().build(is);
    }

    @GET
    @Path("/getstudent/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public Student getStudent(@PathParam("id") String id) {
        SqlSession session = factory.openSession();
        try {
            return session.selectOne("com.demo.studentMapper.getStudent", Integer.valueOf(id));
        } finally {
            session.close();
        }
    }
}

6. web.xml 整合 Jersey

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.demo</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

7. 測試驗證

啟動 Tomcat,訪問 https://localhost:8080/project/rest/student/getstudent/1,響應:

{
  "id": 1,
  "name": "zhansan",
  "age": 20
}

進階優化方向

  • 引入 Spring 管理 SqlSessionFactory、事務、Bean 生命週期
  • 使用 MapperScannerConfigurer 自動掃描 Mapper
  • 配置連接池(Druid/HikariCP)替換 POOLED
  • 統一異常處理、日誌攔截、API 文檔
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved