Jfinal+maven 简单demo sql管理

JFinal

JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。

项目结构:

一、新建一个Project

★ 打开IDEA,Create New Project

★ 通过Maven建立Project,但不使用模板

★ 填写Project相关命名,完成Project的创建。此处将Project命名为「jfinal-demo」

二、把当前Project改为一个POM工程。

该工程作为项目的父工程,用于定义各模块依赖的包的版本、编码方式等。

★ 删掉src目录

★ 编辑根目录下的pom.xml,将打包格式设置为pom。

★ 父工程的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>jfinal-demo</groupId>
  <artifactId>jfinal-parent</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>

  <!-- 集中定义依赖版本号 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jfinal.version>3.5</jfinal.version>
    <junit.version>4.12</junit.version>
  </properties>

  <!--集中声明依赖-->
  <dependencyManagement>
    <dependencies>
      <!--单元测试-->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <!--jfinal依赖-->
      <dependency>
        <groupId>com.jfinal</groupId>
        <artifactId>jfinal</artifactId>
        <version>${jfinal.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <!--定义编译相关内容-->
  <build>
    <!--定义编译后的包名-->
    <finalName>${project.artifactId}</finalName>

    <!--此标签下的是将要加载的插件-->
    <plugins>

      <!-- 资源文件拷贝插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
      </plugin>

      <!-- java编译插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
      </plugin>
    </plugins>

    <!--此标签用于声明插件版本以便统一管理-->
    <pluginManagement>
      <plugins>
        <!-- 配置Tomcat插件 -->
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <!--配置端口号-->
            <port>80</port>
            <!--配置访问路径,此处配置为根目录,即http://localhost/-->
            <path>/</path>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build></project>

三、新建Module(模块)「jfinal-web」

★ 在jfinal-demo目录上单击鼠标右键,新建子Module

★ 创建时选择使用模板

★ 创建完成后,目录结果如下图所示

四、编写测试用代码

★ 在jfinal-web模块的main目录下,新建java目录

★ 把刚建立的java目录标记为Sources Root,这样IDEA才会把该目录下的.java文件当做java源文件来处理

★ 给「jfinal-web」模块添加依赖。版本已经在父工程里定义了,这里不需要填写version。

★ 「jfinal-web」模块的pom.xml

<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/maven-v4_0_0.xsd">
    <parent>
        <artifactId>jfinal-parent</artifactId>
        <groupId>jfinal-demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jfinal-web</artifactId>
    <packaging>war</packaging>
    <name>jfinal-web Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>


        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>jfinal-web</finalName>
    </build></project>

五、编写程序代码以及配置文件

db.properties:

jdbcUrl = jdbc:mysql://localhost:3306/jfinal
user = root
password = 123456

BEIConfig.java配置文件:

package com.bzj.jfinal.Config;

import com.bzj.jfinal.Controller.HelloController;
import com.bzj.jfinal.Model.User;
import com.jfinal.config.*;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.render.ViewType;
import com.jfinal.template.Engine;

public class BEIConfig extends JFinalConfig {

    // 加载少量必要配置,随后可用PropKit.get(...)获取值
    @Override
    public void configConstant(Constants constants) {
        //设置开发模式
        constants.setDevMode(true);
        //设置开发模式,如果为false的话,jfinal存在缓存,导致页面不能立即修改
        constants.setDevMode(true);
        //视图设置为jsp页面
        constants.setViewType(ViewType.JSP);
        PropKit.use("db.properties");
    }

    /**
     * 配置路由 ,及请求地址与实际资源的映射关系 ,有点类似于 springmvc 的@RequestMapping注解
     * @param routes
     */
    @Override
    public void configRoute(Routes routes) {
        routes.add("/user", HelloController.class,"/WEB-INF/view/user");
    }

    @Override
    public void configEngine(Engine engine) {

    }


    /**
     * 配置Jfinal plugin扩展
     * @param
     */

    @Override
    public void configPlugin(Plugins plugins) {
        C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"),PropKit.get("user"),PropKit.get("password"));
        plugins.add(c3p0Plugin);
        ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(c3p0Plugin);
        //activeRecordPlugin.setShowSql(true);
        activeRecordPlugin.addMapping("user", User.class);
        activeRecordPlugin.setBaseSqlTemplatePath(PathKit.getRootClassPath()
                + "/sql");
        activeRecordPlugin.addSqlTemplate("all.sql");
        /*// 所有映射在 MappingKit 中自动化搞定
        _MappingKit.mapping(activeRecordPlugin);*/
        plugins.add(activeRecordPlugin);

    }

    @Override
    public void configInterceptor(Interceptors interceptors) {

    }

    @Override
    public void configHandler(Handlers handlers) {

    }

    /**
     * 配置模板
     * @param engine
     */

//    public void configEngine(Engine engine) {
//
//    }


}

HelloController.java:

package com.bzj.jfinal.Controller;

import com.bzj.jfinal.Model.User;
import com.jfinal.core.Controller;
import com.jfinal.plugin.activerecord.Db;

import java.util.List;

public class HelloController extends Controller {
    public void form(){
        render("form.jsp");
    }

    public void index(){
        List<User> users = User.dao.find("select * from user");
        System.out.println(users);
        setAttr("list",users);
        render("list.jsp");
    }

    public void submit(){
        User user = getModel(User.class,"user");
        user.save();
        redirect("/user/index");
    }

    public void del(){
        System.out.println(getPara(0));
        User.dao.deleteById(getPara(0));
        redirect("/user/index");
    }

    public void edit(){
        System.out.println(getPara(0));
        User user = User.dao.findById(getPara(0));
        setAttr("user",user);
        render("form.jsp");

    }

    public void update(){
        User user = getModel(User.class,"user");
        user.update();
        /*redirect("/user");*/
        index();
    }

    public void result(){
        System.out.println(getPara("id")+"======================");
        this.setAttr("result",User.dao.findById(this.getPara("id")));
        System.out.println(User.dao.findById(this.getPara("id")));
        render("result.jsp");
    }

    public void sqlTest(){
        String sql = Db.getSql("user.allUser");
        System.out.println(sql);
        List<User> list = Db.query(sql);
        setAttr("list",list);
        render("list.jsp");
    }
}

User.java:

package com.bzj.jfinal.Model;

import com.jfinal.plugin.activerecord.Model;

public class User extends Model<User> {
    public static final User dao = new User();
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

user.sql:

#sql("allUser")
  SELECT * FROM user
#end

all.sql:

#namespace("user")
  #include("user\user.sql")
#end

前端JSP页面:

<%--
  Created by IntelliJ IDEA.
  User: bzj
  Date: 2018/10/28
  Time: 15:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div>
    <a href="/user/form">新增用户</a>
</div>

<form action="/user/result" method="post">
    <input type="text" name="id">
    <input type="submit" value="搜索">
</form>

<table class="table">
    <thead>
    <tr>
        <th colspan="5" align="center">用户信息表</th>
    </tr>
    <tr>
        <th>ID</th> <th>账号</th><th>密码</th><th>操作</th>
    </tr>
    </thead>
    <tbody>
    <c:forEach items="${list}" var="user">
        <tr>
            <td>${user.id}</td> <td>${user.username}</td> <td>${user.password}</td>
            <td><a  href="/user/edit/${user.id}">修改</a>
                <a  href="/user/del/${user.id}">删除</a></td>
        </tr>
    </c:forEach>
    </tbody>
</table>
</body>
</html>

项目启动:

效果图:

参考:http://www.jfinal.com/share/36

发布了13 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39701913/article/details/83502915