梦幻西游力量临时符最多

梦幻西游力量临时符最多,第1张

59是梦幻中临时属性最多的等级,能增加100点临时属性点

在正常的情况下大家刷任务的时候都是需要使用临时属性符的,但是大家使用的临时符跟上面的临时属性福是不一样的,大家使用的临时符是各个门派的玩家自己制造出来的,能够直接增加属性,

而上面的临时属性符是由系统赠送的,它能够增加体质,魔力,力量,耐力,敏捷这五种属性

而且每种属性会加20点,总共能够增加100点属性

但是这种道具的使用等级上限是59级,所以59级梦幻中能够拥有临时属性加成最多的一个等级。

在天下识君任务中玩家能够领取的任务类型很多,这里面有一类就是要求玩家上交某些物品的,上面的这位玩家领到的任务就是被要求上交夜光珠,碰到这种任务正常的情况下是不可能会领取的

因为上交夜光珠的成本太高了,虽然完成任务任务可能会获得五宝,但只是有可能会获得,做这样的任务亏钱的可能性会更大一点。

首先要想使用自定义注解,必须创建自己的注解类

右键项目,new ->Annotation

然后在注解里定义自己的方法,该方法是别的类使用注解时需要填的属性

package com.sy.demo.annotationimport java.lang.annotation.Documentedimport java.lang.annotation.ElementTypeimport java.lang.annotation.Retentionimport java.lang.annotation.RetentionPolicyimport java.lang.annotation.Target@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Table {public String value()}

注:如果只有一个方法时,应该用value()来指定方法名,这样就可以直接简写@Table("xxx")而不是@Table(aaa="xxx")

其中注解类上的注解称为元注解

@Target(ElementType.TYPE)

@Target的意思是,该注解类是放在什么位置的,是放在类上、字段上还是方法上,ElementType.TYPE意思是只能放在类上或接口上,ElementType.FIELD意思是只能放在字段上等等。

如果有多个位置选择可以这么写:

@Target({ElementType.TYPE, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

意思是作用域,一般写RUNTIME就行

@Documented

意思是是否在生成JavaDoc时加入该注解类,这个看情况写不写

还有其他元注解,想要研究的就自己研究吧

定义完自定义注解了,下面就是使用的时候了

package com.sy.demo.entityimport com.sy.demo.annotation.Columnimport com.sy.demo.annotation.Table@Table("tdb_user")public class User { @Column("id") private Long id @Column("email") private String email @Column("password") private String password public Long getId() { return id } public void setId(Long id) { this.id = id } public String getEmail() { return email } public void setEmail(String email) { this.email = email } public String getPassword() { return password } public void setPassword(String password) { this.password = password }}

在这里我定义了一个实体类,用于表示用户信息,其中还是用了一个@Column类,代码如下

package com.sy.demo.annotationimport java.lang.annotation.Documentedimport java.lang.annotation.ElementTypeimport java.lang.annotation.Retentionimport java.lang.annotation.RetentionPolicyimport java.lang.annotation.Target@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Column { public String value()}

由代码可知,@Column是放在field上的

使用也使用完了,下面该是解析的时候了。

package com.sy.demo.utilimport java.lang.reflect.Fieldimport com.sy.demo.annotation.Columnimport com.sy.demo.annotation.Tablepublic class SqlUtil { private static final String EMPTY = "" @SuppressWarnings("unchecked") public static String getSql(Object object) { StringBuilder sb = new StringBuilder() Class<Object>c boolean isExist Column column String columnName String getMethodName Object columnValue String[] strs try { c = (Class<Object>) object.getClass() isExist = c.isAnnotationPresent(Table.class) if (!isExist) { return EMPTY } Table table = c.getAnnotation(Table.class) sb.append(" SELECT * FROM " + table.value() + " WHERE 1 = 1 " ) Field[] fields = c.getDeclaredFields() for (Field field: fields) { isExist = field.isAnnotationPresent(Column.class) if (!isExist) { continue } column = field.getAnnotation(Column.class) columnName = column.value() getMethodName = "get" + columnName.substring(0, 1).toUpperCase() + columnName.substring(1) columnValue = c.getMethod(getMethodName, new Class[0]).invoke(object, new Object[0]) if (columnValue == null) { continue } if (columnValue instanceof String) { columnValue = (String)columnValue if(((String) columnValue).contains(",")) { sb.append("AND " + columnName + " IN (") strs = ((String) columnValue).split(",") for(String str: strs) { sb.append("'" + str + "',") } sb.deleteCharAt(sb.length() - 1) sb.append(") ") } else { sb.append("AND " + columnName + " = '" + columnValue + "' ") } } else if (columnValue instanceof Integer || columnValue instanceof Long) { sb.append("AND " + columnName + " = " + columnValue + " ") } } } catch (Exception e) { e.printStackTrace() } return sb.toString() }}

解析的时候用的是反射机制,可能看着比较麻烦比较乱,而且也新手可能也不太理解,在用的时候会发现其实还是挺方便的。

原理解释根据反射找到User类,在判断是否有注解,接着拼接sql什么的

整个列子项目中完整的代码如下(有许多步骤测试用例,懒得删了,全贴出来吧)

Controller

package com.sy.demo.controllerimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.stereotype.Controllerimport org.springframework.web.bind.annotation.RequestMappingimport org.springframework.web.bind.annotation.ResponseBodyimport com.sy.demo.entity.Userimport com.sy.demo.service.IUserService@Controller@RequestMapping("hello")public class UserController { @Autowired private IUserService hService @RequestMapping(value = "demo1") public String demo1() { return "demo1" } @SuppressWarnings("deprecation") @RequestMapping(value = "demo2") public String demo2() { return hService.test() } @RequestMapping(value = "demo3") @ResponseBody public String demo3() { User user = new User() user.setId(1L) user.setEmail("[email protected]") user.setPassword("1q2w3e4r,123456,aaaaa") return hService.getUser(user) } @RequestMapping(value = "demo4") @ResponseBody public String demo4() { User user = new User() user.setId(1L) user.setEmail("[email protected]") user.setPassword("1q2w3e4r,123456,aaaaa") return hService.getUser2(user) }}

service:

package com.sy.demo.serviceimport com.sy.demo.entity.Userpublic interface IUserService { @Deprecated public String test() public String getUser(User user) public String getUser2(User user)}

package com.sy.demo.service.implimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.stereotype.Serviceimport com.sy.demo.entity.Userimport com.sy.demo.repository.IUserRepositoryimport com.sy.demo.service.IUserService@Service("hService")public class UserServiceImpl implements IUserService { @Autowired private IUserRepository hRepository @Deprecated @Override public String test() { return "demo2" } @Override public String getUser(User user) { return hRepository.queryUser(user) } @Override public String getUser2(User user) { return hRepository.queryUser2(user) }}

Repository

package com.sy.demo.service.implimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.stereotype.Serviceimport com.sy.demo.entity.Userimport com.sy.demo.repository.IUserRepositoryimport com.sy.demo.service.IUserService@Service("hService")public class UserServiceImpl implements IUserService { @Autowired private IUserRepository hRepository @Deprecated @Override public String test() { return "demo2" } @Override public String getUser(User user) { return hRepository.queryUser(user) } @Override public String getUser2(User user) { return hRepository.queryUser2(user) }}

package com.sy.demo.repository.implimport java.sql.PreparedStatementimport java.sql.ResultSetimport java.sql.SQLExceptionimport org.springframework.stereotype.Repositoryimport com.sy.demo.entity.Userimport com.sy.demo.repository.IUserRepositoryimport com.sy.demo.util.DBUtilimport com.sy.demo.util.SqlUtil@Repository("hRepository")public class UserRepositoryImpl implements IUserRepository { public String queryUser(User user) { String sql = SqlUtil.getSql(user) System.out.println(sql) return sql } @Override public String queryUser2(User user) { StringBuilder sb = new StringBuilder() String sql = SqlUtil.getSql(user) System.out.println(sql) PreparedStatement ps = DBUtil.getPreparedStatement(sql) Long id String email String password try { ResultSet rs = ps.executeQuery() while (rs.next()) { id = rs.getLong("id") email = rs.getString("email") password = rs.getString("password") sb.append("ID:").append(id).append(", email:"). append(email).append(", password:").append(password).append("<br/>") } } catch (SQLException e) { e.printStackTrace() } return sb.toString() }}

entity:

package com.sy.demo.entityimport com.sy.demo.annotation.Columnimport com.sy.demo.annotation.Table@Table("tdb_user")public class User { @Column("id") private Long id @Column("email") private String email @Column("password") private String password public Long getId() { return id } public void setId(Long id) { this.id = id } public String getEmail() { return email } public void setEmail(String email) { this.email = email } public String getPassword() { return password } public void setPassword(String password) { this.password = password }}

annotation

package com.sy.demo.annotationimport java.lang.annotation.Documentedimport java.lang.annotation.ElementTypeimport java.lang.annotation.Retentionimport java.lang.annotation.RetentionPolicyimport java.lang.annotation.Target@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Table { public String value()}

package com.sy.demo.annotationimport java.lang.annotation.Documentedimport java.lang.annotation.ElementTypeimport java.lang.annotation.Retentionimport java.lang.annotation.RetentionPolicyimport java.lang.annotation.Target@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Column { public String value()}

util工具类

package com.sy.demo.utilimport java.sql.Connectionimport java.sql.PreparedStatementimport java.sql.SQLExceptionimport com.mysql.jdbc.jdbc2.optional.MysqlDataSourcepublic class DBUtil { public static final String URL = "jdbc:mysql://localhost:3306/db_test" public static final String USERNAME = "root" public static final String PASSWORD = "root" public static Connection conn = null public static MysqlDataSource dataSource static { dataSource = new MysqlDataSource() dataSource.setUser(USERNAME) dataSource.setPassword(PASSWORD) dataSource.setURL(URL) } public static PreparedStatement getPreparedStatement(String sql) { try { conn = dataSource.getConnection() return conn.prepareStatement(sql) } catch (SQLException e) { e.printStackTrace() } return null }}

package com.sy.demo.utilimport java.lang.reflect.Fieldimport com.sy.demo.annotation.Columnimport com.sy.demo.annotation.Tablepublic class SqlUtil { private static final String EMPTY = "" @SuppressWarnings("unchecked") public static String getSql(Object object) { StringBuilder sb = new StringBuilder() Class<Object>c boolean isExist Column column String columnName String getMethodName Object columnValue String[] strs try { c = (Class<Object>) object.getClass() isExist = c.isAnnotationPresent(Table.class) if (!isExist) { return EMPTY } Table table = c.getAnnotation(Table.class) sb.append(" SELECT * FROM " + table.value() + " WHERE 1 = 1 " ) Field[] fields = c.getDeclaredFields() for (Field field: fields) { isExist = field.isAnnotationPresent(Column.class) if (!isExist) { continue } column = field.getAnnotation(Column.class) columnName = column.value() getMethodName = "get" + columnName.substring(0, 1).toUpperCase() + columnName.substring(1) columnValue = c.getMethod(getMethodName, new Class[0]).invoke(object, new Object[0]) if (columnValue == null) { continue } if (columnValue instanceof String) { columnValue = (String)columnValue if(((String) columnValue).contains(",")) { sb.append("AND " + columnName + " IN (") strs = ((String) columnValue).split(",") for(String str: strs) { sb.append("'" + str + "',") } sb.deleteCharAt(sb.length() - 1) sb.append(") ") } else { sb.append("AND " + columnName + " = '" + columnValue + "' ") } } else if (columnValue instanceof Integer || columnValue instanceof Long) { sb.append("AND " + columnName + " = " + columnValue + " ") } } } catch (Exception e) { e.printStackTrace() } return sb.toString() }}

根据你拥有的临时F,看是打在没装备上的,FF下面有写,然后取下要打的装备或武器,鼠标右键点一下临时F,就出现一个临时物品栏,选中你要打的装备,鼠标左键点一下就行了,系统就会说你的武器或装备得到了强化,临时F等级越高打得越多,属性随机的,看人品的,希望帮得到你吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/7965647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存