Jfinal 的sql语句中 如何使用if判断属性是否为空

 1. controller 层代码:

public void questionInfo(){
        // 获取 产品线id 、 技术点id, 进行查询
        Long productLineId = this.getParaToLong("productLineId");
        Integer level = this.getParaToInt("level");
        String questionTypes = this.getPara("questionTypes");
        String difficulty = this.getPara("difficulty");
        Kv cond = Kv.create().set("productLineId",productLineId).set("questionTypes",questionTypes).set("difficulty",difficulty);

        String sql = null;
        List<TopicInformation> topicInformationList = new ArrayList<TopicInformation>();
        if(level == 1){
            SqlPara sqlPara = Db.getSqlPara("teacher.testFindByProduct", cond);
            topicInformationList = TopicInformation.dao.find(sqlPara);
        }else if(level == 2){
            Long technologyId = this.getParaToLong("technologyId");
            sql = Db.getSql("teacher.testFindByProductAndTechnology");
            topicInformationList = TopicInformation.dao.find(sql,productLineId,technologyId);
        }
}

2.sql语句

#sql("testFindByProduct")
  select * from topic_information where  productLineId = #para(productLineId) and flag = 1
  #if(questionTypes)
    and questionTypes = #para(questionTypes)
  #end
  #if(difficulty)
    and difficulty = #para(difficulty)
  #end
#end

在jfinal3.2中  使用Kv.create().set().....方法,设置属性, 然后使用 SqlPara   获取你想要的SQL语句,

在然后使用  实体类.dao.find(sql), 就可以查询数据库,得到自己想要的数据了。

看了一天半jfinal, 就开始写代码了, 如有错误,请您多多指点。

 

好的,下面是一篇关于JFinal服务器端权限管理实验的报告: ## 实验目的 本实验旨在掌握JFinal服务器端权限管理的实现方法,以提高Web应用程序的安全性。 ## 实验环境 本实验的开发环境如下: - 操作系统:Windows 10 - 开发工具:IntelliJ IDEA 2021.1 - Web框架:JFinal 4.9 ## 实验步骤 ### 1. 创建JFinal项目 首先,我们需要创建一个JFinal项目作为实验的基础。在IntelliJ IDEA中,可以通过以下步骤创建JFinal项目: 1. 打开IntelliJ IDEA,选择“File” -> “New” -> “Project”。 2. 在弹出的“New Project”对话框中选择“Java Enterprise” -> “JFinal Web Project”,然后单击“Next”。 3. 在下一个界面中设置项目的名称、目录和其他选项,然后单击“Finish”创建项目。 ### 2. 配置JFinal插件和路由 接下来,我们需要配置JFinal插件和路由,以便实现权限管理。在项目的“_config”包中创建一个名为“PluginConfig.java”的类,并在其中添加以下代码: ```java public class PluginConfig { public static void configPlugin(Plugins plugins) { // 配置数据库连接池插件 DruidPlugin dp = new DruidPlugin("jdbc:mysql://localhost:3306/test", "root", "password"); plugins.add(dp); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); arp.addMapping("user", User.class); plugins.add(arp); // 配置Shiro插件 ShiroPlugin shiroPlugin = new ShiroPlugin(new MyShiroFilterFactory(), new MyShiroRealm()); plugins.add(shiroPlugin); } public static void configRoute(Routes routes) { // 配置路由 routes.add("/", IndexController.class); routes.add("/login", LoginController.class); routes.add("/logout", LogoutController.class); routes.add("/admin", AdminController.class); } } ``` 这个类中配置了Druid数据库连接池插件、ActiveRecord插件和Shiro安全框架插件。同时还配置了路由,将URL映射到相应的控制器类中。 ### 3. 创建用户模型和数据表 接下来,我们需要创建一个用户模型和相应的数据表,以便实现用户身份验证和授权。在项目的“model”包中创建一个名为“User.java”的类,并在其中添加以下代码: ```java public class User extends Model<User> { public static final User dao = new User(); public User getUserByName(String username) { return findFirst("select * from user where username = ?", username); } public String getPassword() { return getStr("password"); } public List<Role> getRoles() { return Role.dao.find("select r.* from user_role ur " + "left join role r on ur.role_id = r.id " + "where ur.user_id = ?", getInt("id")); } } ``` 这个类继承自JFinal的Model类,表示用户模型。其中包括一个getUserByName方法,用于根据用户名获取用户对象;一个getPassword方法,用于获取用户密码;以及一个getRoles方法,用于获取用户所属的角色列表。 接下来,在数据库中创建一个名为“user”的数据表,用于存储用户信息。可以使用以下SQL语句创建该表: ```sql CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` ### 4. 创建角色模型和数据表 接下来,我们需要创建一个角色模型和相应的数据表,以便实现用户授权。在项目的“model”包中创建一个名为“Role.java”的类,并在其中添加以下代码: ```java public class Role extends Model<Role> { public static final Role dao = new Role(); public List<Permission> getPermissions() { return Permission.dao.find("select p.* from role_permission rp " + "left join permission p on rp.permission_id = p.id " + "where rp.role_id = ?", getInt("id")); } } ``` 这个类继承自JFinal的Model类,表示角色模型。其中包括一个getPermissions方法,用于获取角色拥有的权限列表。 接下来,在数据库中创建一个名为“role”的数据表,用于存储角色信息。可以使用以下SQL语句创建该表: ```sql CREATE TABLE `role` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` ### 5. 创建权限模型和数据表 最后,我们需要创建一个权限模型和相应的数据表,以便实现权限控制。在项目的“model”包中创建一个名为“Permission.java”的类,并在其中添加以下代码: ```java public class Permission extends Model<Permission> { public static final Permission dao = new Permission(); } ``` 这个类继承自JFinal的Model类,表示权限模型。 接下来,在数据库中创建一个名为“permission”的数据表,用于存储权限信息。可以使用以下SQL语句创建该表: ```sql CREATE TABLE `permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `url` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` ### 6. 创建控制器类和视图 接下来,我们需要创建控制器类和视图,以实现用户登录、注销和管理等功能。在项目的“controller”包中创建以下类: - IndexController:用于显示主页。 - LoginController:用于处理用户登录请求。 - LogoutController:用于处理用户注销请求。 - AdminController:用于显示管理员页面。 在控制器类中,我们需要实现用户身份验证和授权逻辑。可以使用Shiro安全框架来实现这些功能。具体来说,可以使用Shiro的Subject对象来进行认证和授权,如下所示: ```java Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(username, password); subject.login(token); if (subject.isAuthenticated()) { // 用户已通过身份验证 // 进行授权逻辑 } ``` 在视图中,我们需要实现用户界面和交互逻辑。可以使用HTML、CSS和JavaScript等技术来实现这些功能。 ### 7. 测试应用程序 最后,我们需要测试应用程序是否能够正常工作。可以在浏览器中访问应用程序的URL,并进行登录、注销和管理等操作,以验证应用程序的功能和安全性。 ## 实验总结 本实验通过JFinal服务器端权限管理的实现方法,提高了Web应用程序的安全性。在实验中,我们学习了JFinal插件和路由配置、用户模型和数据表设计、角色模型和数据表设计、权限模型和数据表设计、控制器类和视图实现,以及应用程序测试等内容,掌握了一些基本的Web开发技能和安全技术。希望这个实验可以帮助您更好地理解JFinal服务器端权限管理的实现方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值