“object”未包含“Where”的定义,并且找不到可接受第一个“object”类型参数的扩展方法“Where”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;

namespace WebApplication1.Models
{
public class Class1
{
StudentEntities db = new StudentEntities();

    public Student GetStudent(string name)
{
    return db.Students.Where(s => s.Sname == name).FirstOrDefault();
}

public Course GetCourse(string name)
{
    return db.Courses.Where(s => s.Cname == name).FirstOrDefault();
}

public SC GetSC(string sno, string cno)
{
    return db.SCs.Where(s => s.Sno == sno && s.Cno == cno).FirstOrDefault();
}

}
}

“object”未包含“Where”的定义,并且找不到可接受第一个“object”类型参数的扩展方法“Where”(是否缺少 using 指令或程序集引用?)

1个回答

在db.Students上点右键,转到定义(或者f12)
看下Students的类型,为什么被定义成object了,按理说应该是 IEnumerable IQueryable 或者 IList 等类型才对。

weixin_44666907
小沙雕 回复caozhy: laji
大约一年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复qq_29173061: 什么叫还是不对,我又没让你修改什么
一年多之前 回复
qq_29173061
qq_29173061 还是不对啊,老样子
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
“string”不包含“Fill”的定义
我尝试在gridview控件显示该用户发表过的语句;然而他显示:错误 1 “string”不包含“Fill”的定义,并且找不到可接受类型为“string”的第一个参数的扩展方法“Fill”(是否缺少 using 指令或程序集引用?) C:\Users\Administrator\Desktop\练习\聊天室\gllyb.aspx.cs 49 17 聊天室 该怎么解决;向各位大神求教。 代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Configuration; using System.Data.SqlClient; using System.Collections; public partial class liuyanban : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Label2.Text = "当前在线人数为" + Application["count"].ToString() + "人"; Label2.Text = Session["UserID"].ToString(); } protected void Button_send_Click(object sender, EventArgs e) { string took = TextBox1.Text; string connString = System.Configuration.ConfigurationManager.ConnectionStrings["talkroomConnectionString"].ConnectionString; SqlConnection myConn = new SqlConnection(connString); string sqlStr = " insert into liaotian(用户名,时间,内容) values('" + Session["UserID"].ToString() + "','" + System.DateTime.Now.ToString() + "','" + TextBox1.Text .ToString() + "') "; SqlCommand myCmd = new SqlCommand(sqlStr, myConn); myConn.Open(); myCmd.ExecuteNonQuery(); myConn.Close(); TextBox1.Text = " "; GridView1.DataBind (); } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { SqlConnection sqlCon = new SqlConnection(); sqlCon.ConnectionString = "server=PC201503061527;uid=sa;pwd=sa;database=talkroom"; sqlCon.Open(); string sql = string.Format("select * from liaotian where 用户名='{0}' ", Session["UserID"].ToString()); try { SqlCommand cmd = new SqlCommand(sql, sqlCon); DataSet dadaset = new DataSet("liaotian"); sql.Fill(dadaset); this.GridView1.DataSourceID = null; GridView1.DataSource = dadaset.Tables[0]; GridView1.DataBind(); } catch { } } }
MyBatis-plus分页条件自定义查询的问题
```java package io.renren.modules.soft.service.impl; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.renren.common.utils.PageUtils; import io.renren.common.utils.Query; import io.renren.modules.soft.dao.OrderDao; import io.renren.modules.soft.dto.OrderVO; import io.renren.modules.soft.entity.OrderEntity; import io.renren.modules.soft.service.OrderService; @Service("orderService") public class OrderServiceImpl extends ServiceImpl<OrderDao, OrderEntity> implements OrderService { @Autowired private OrderDao orderDao; @Override public PageUtils getlistData(Map<String, Object> params) { Page<OrderVO> page = (Page<OrderVO>) new Query<OrderVO>().getPage(params); page.setRecords(this.baseMapper.selectListData(page,params)); return new PageUtils(page); } } ``` OrderDao.java方法 ``` package io.renren.modules.soft.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.renren.modules.soft.dto.OrderVO; import io.renren.modules.soft.entity.OrderEntity; /** * 订单基础表 * * @author Mark * @email sunlightcs@gmail.com * @date 2019-03-22 08:54:02 */ @Mapper public interface OrderDao extends BaseMapper<OrderEntity> { List<OrderVO> selectListData(Page<OrderVO> page, @Param("map")Map<String, Object> params); } ``` 自定的XML中的SQL语句 ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="io.renren.modules.soft.dao.OrderDao"> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="io.renren.modules.soft.entity.OrderEntity" id="orderMap"> <result property="id" column="ID"/> <result property="orderNo" column="order_no"/> <result property="orderType" column="order_type"/> <result property="orderTitle" column="order_title"/> <result property="totalFee" column="total_fee"/> <result property="settlementTotalFee" column="settlement_total_fee"/> <result property="payWay" column="pay_way"/> <result property="orderStatus" column="order_status"/> <result property="payStatus" column="pay_status"/> <result property="payId" column="pay_id"/> <result property="userId" column="user_id"/> <result property="payEndTime" column="pay_end_time"/> <result property="createTime" column="create_time"/> <result property="createBy" column="create_by"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="status" column="status"/> </resultMap> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="io.renren.modules.soft.dto.OrderVO" id="orderVOMap"> <result property="id" column="ID"/> <result property="orderNo" column="order_no"/> <result property="orderType" column="order_type"/> <result property="orderTitle" column="order_title"/> <result property="totalFee" column="total_fee"/> <result property="settlementTotalFee" column="settlement_total_fee"/> <result property="payWay" column="pay_way"/> <result property="orderStatus" column="order_status"/> <result property="payStatus" column="pay_status"/> <result property="payId" column="pay_id"/> <result property="username" column="username"/> <result property="payEndTime" column="pay_end_time"/> </resultMap> <select id="selectListData" parameterType="String" resultMap="orderVOMap"> SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id <if test="map.username != null"> AND au.wechat_nick_name like concat(concat("%",#{map.username}),"%") </if> </select> </mapper> ``` 出现的问题:当map.username不是空的时候,在第一页能够查询出所有的结果,但是跳转到第二页的时候,再输入条件查询,直接连带着分页参数和条件查询参数直接查询SQL语句。 这样,如果第二页中不存在这个条件的结果,那么就完全查询不到着一条数据。请问有什么解决方法 当在第一页查询的日志如下: ``` i.r.m.soft.dao.OrderDao.selectListData : ==> Preparing: SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id AND au.wechat_nick_name like concat(concat("%",?),"%") LIMIT ?,? i.r.m.soft.dao.OrderDao.selectListData : ==> Parameters: 刘仁(String), 0(Long), 10(Long) i.r.m.soft.dao.OrderDao.selectListData : <== Total: 3 ``` 当在第二页的时候查询日志如下: ``` i.r.m.soft.dao.OrderDao.selectListData : ==> Preparing: SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id AND au.wechat_nick_name like concat(concat("%",?),"%") LIMIT ?,? i.r.m.soft.dao.OrderDao.selectListData : ==> Parameters: 刘仁(String), 10(Long), 10(Long) i.r.m.soft.dao.OrderDao.selectListData : <== Total: 0 ``` 因为分页了,所有查询不到结果,可是我想分不分也都能查询到全部结果,各位大神有什么好的解决方案,请帮一下忙。
我的java web项目部署到linux下遇到的mysql问题
//查询当前店铺 -自定义类别 public List<ShopCoverType> findShopCovertype(String shopCode){ String sql = "SELECT A.`shop_code`,A.`cover_type_code`,A.`cover_type_name` FROM `shop_cover_type` A WHERE A.`shop_code` = ?"; final List<ShopCoverType> list = new ArrayList<ShopCoverType>(); shopcoverTypeDao.getJdbcTemplate().query(sql, new Object[]{shopCode},new RowCallbackHandler(){ @Override public void processRow(ResultSet rs) throws SQLException { // TODO Auto-generated method stub ShopCoverType sct = new ShopCoverType(); sct.setCoverTypeCode(rs.getString("cover_type_code")); sct.setShopCode(rs.getString("shop_code")); sct.setCoverTypeName(rs.getString("cover_type_name")); list.add(sct); } }); return list; } 这是我本地的一个方法 在linux下会报错 看我的sql 是 String sql = "SELECT A.`shop_code`,A.`cover_type_code`,A.`cover_type_name` FROM `shop_cover_type` A WHERE A.`shop_code` = ?"; from shop_cover_type 在linux下 hibernate 查的是 from cx. shop_cover_type 因此会报错找不到这个表 (Table 'cx.shop_cover_type' doesn't exist) 很多表都是这样前面多了个 cx. 第一次把项目布到linux 遇到很多问题 谢谢大jia ![图片说明](https://img-ask.csdn.net/upload/201505/03/1430634031_302384.png)
Layui框架的table的选中行功能,获取选中行数据为空!!有没有大佬帮忙看看啊,查了各种资料都不行!!!
``` <table class="layui-hide" id="user-index" lay-filter="user-index"></table> ``` ``` <script> layui.use(['layer', 'table'], function () { var $ = layui.$ , layer = layui.layer , form = layui.form , table = layui.table; //独立版的layer无需执行这一句 var tableId = 'user-index'; var tableToolbar = 'user-index-toolbar'; var tableSearchForm = 'user-index-search'; var minWidth = 768; // 表格渲染 table.render({ elem: '#' + tableId , toolbar: '#' + tableToolbar , defaultToolbar: ['filter'] // ['filter', 'print', 'exports'] , url: '/User/list' ,where:{'username':'','realname':'','tel':'','city':'','isdelete':0} , method: 'get' , cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增 , cols: [[ {type: 'checkbox', id:'cb',fixed: 'left'} , {field: 'id', width: 80, title: 'ID', sort: true} , {field: 'username', width: 212, title: '用户名', sort: true} , {field: 'realname', width: 100, title: '姓名'} , {field: 'sex', width: 105, title: '性别'} , {field: 'tel', width: 180, title: '手机号'} , {field: 'city', width: 120, title: '城市', sort: true} , {field: 'role', width: 100, title: '角色ID', sort: true} , { title: '状态', width: 150, templet: function (res) { if (res.status == '1') { return '已激活(使用中)'; } else { return '<span style="color: #F581B1;">冻结(过期请续费)</span>'; } } } ]] , page: true ,limit:7 , height: 'full-60' // 100 }); ``` 头工具栏的监听 ``` table.on('toolbar(' + tableId + ')', function (obj) { var checkStatus = table.checkStatus(obj.config.id) , data = checkStatus.data; console.log(data) //获取选中行的数据 ``` 结果我选中一条或者是多条数据之后都获取不到数据,table的id我也检查过了没问题。 前端控制台输出是这样的: ``` Object data: Array(0) length: 0 __proto__: Array(0) isAll: false __proto__: Object ``` 但是我又试了全选,神奇的发现全选能选择,有没有大佬能帮忙解释下这是什么问题啊,怎么才能解决
easyui tree问题,第一次加载成功,刷新页面就乱了
![图片说明](https://img-ask.csdn.net/upload/201506/08/1433744170_696723.jpg) 我用Easyui 的 tree 第一次打开页面 tree 加载正常 ,按F5刷新页面就乱了![图片说明](https://img-ask.csdn.net/upload/201506/08/1433744212_375164.png) 我调试了一下 是父级ID 的问题,实现类:public List<TQskjMenu> getTreeNode(String id) { System.out.println(id+","); Map<String,Object> params = new HashMap<String,Object>(); //定义一个菜单模型集合 List<TQskjMenu> tMenu = new ArrayList<TQskjMenu>(); //创建hql查询语句 StringBuffer hql = new StringBuffer(); if(id==null || id.equals("")){ //查询所有根节点 hql.append("from QskjMenu t where t.qskjMenu is null"); }else{ //异步加载当前id下的子节点 hql.append("from QskjMenu t where t.qskjMenu.id=:id"); params.put("id", id); } //定义一个菜单集合来接收查询到的数据 List<QskjMenu> menu = baseDao.find(hql,params); //如果返回的集合不为空,就循环将菜单里面的属性拷贝到菜单模型中去,并把对象添加到上面创建的菜单模型中去 if(menu != null && menu.size()>0){ for(QskjMenu qskjMenu: menu){ TQskjMenu m = new TQskjMenu(); BeanUtils.copyProperties(qskjMenu, m); Set<QskjMenu> set = qskjMenu.getQskjMenus(); if(set!=null && !set.isEmpty()){ m.setState("closed"); }else{ m.setState("open"); } tMenu.add(m); } } //返回菜单模型 return tMenu; } 数据表: ![图片说明](https://img-ask.csdn.net/upload/201506/08/1433744189_151839.png)
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
hibernate 采用session.save(Object)方法保存不了数据
代码如下: bean类: package org.hibernate.sample.modle; import java.io.Serializable; import org.apache.commons.lang.builder.ToStringBuilder; /** @author Hibernate CodeGenerator */ public class Student implements Serializable { private static final long serialVersionUID = 1L; /** identifier field */ private Integer studentId; /** persistent field */ private String name; /** persistent field */ private String sex; /** persistent field */ private Integer age; /** full constructor */ public Student(String name, String sex, Integer age) { this.name = name; this.sex = sex; this.age = age; } /** default constructor */ public Student() { } public Integer getStudentId() { return this.studentId; } public void setStudentId(Integer studentId) { this.studentId = studentId; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; } public String toString() { return new ToStringBuilder(this) .append("studentId", getStudentId()) .toString(); } } 映射配置: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="org.hibernate.sample.modle"> <!-- Created by the Middlegen Hibernate plugin 2.1 http://boss.bekk.no/boss/middlegen/ http://www.hibernate.org/ --> <class name="Student" table="student" dynamic-update="true"> <id name="studentId" type="java.lang.Integer" column="student_id" unsaved-value="0"> <generator class="native"/> </id> <property name="name" type="java.lang.String" column="name" not-null="true" length="45"/> <property name="sex" type="java.lang.String" column="sex" not-null="true" length="45"/> <property name="age" type="java.lang.Integer" column="age" not-null="true" length="45"/> <!-- Associations --> </class> </hibernate-mapping> 配置文件: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- SessionFactory 配置 --> <session-factory> <!-- MySQL配置 --> <!-- 数据库URL --> <property name="connection.url"> <![CDATA[ jdbc:mysql://localhost:3306/bms?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8]]> </property> <!-- 数据库JDBC驱动 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!--数据库用户名 --> <property name="connection.username"><![CDATA[root]]></property> <!--数据库用户密码 --> <property name="connection.password"></property> <!--dialect ,每个数据库都有其对应的Dialet以匹配其平台特性 --> <property name="dialect"> org.hibernate.dialect.MySQLDialect</property> <!-- 是否将运行期生成的SQL输出到日志以供调试 --> <property name="show_sql">true</property> <!--映射文件配置,注意配置文件名必须包含其相对于根的全路径 --> <mapping resource="org/hibernate/sample/modle/Student.hbm.xml"/> </session-factory> </hibernate-configuration> 测试类: package test; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.Session; import org.hibernate.sample.modle.Student; import junit.framework.Assert; import junit.framework.TestCase; public class HibernateTest extends TestCase { Session session = null; /** * JUnit中setUp方法在TestCase初始化的时候会自动调用 一般用于初始化公用资源 此例中,用于初始化Hibernate Session */ protected void setUp() { try { /** * 采用hibernate.properties配置文件的初始化代码: Configuration config = new * Configuration(); config.addClass(TUser.class); */ // 采用hibernate.cfg.xml配置文件 // 请注意初始化Configuration时的差异: // 1.Configuration的初始化方式 // 2.xml文件中已经定义了Mapping文件,因此无需再Hard Coding导入 // POJO文件的定义 Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); session = sessionFactory.openSession(); } catch (HibernateException e) { e.printStackTrace(); } } /** * 与setUp方法相对应,JUnit TestCase执行完毕时,会自动调用tearDown方法 一般用于资源释放 * 此例中,用于关闭在setUp方法中打开的Hibernate Session */ protected void tearDown() { try { session.close(); } catch (HibernateException e) { e.printStackTrace(); } } /** * 对象持久化(Insert)测试方法 * * JUnit中,以”test”作为前缀的方法为测试方法,将被JUnit自动添加 到测试计划中运行 */ public void testInsert() { try { Student student = new Student(); // student.setStudentId( Integer.valueOf(1)); student.setName("哈哈"); student.setSex("男"); student.setAge(Integer.valueOf(13)); session.save(student); session.flush(); System.out.println(student.getStudentId()); } catch (HibernateException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 对象读取(Select)测试 请保证运行之前数据库中已经存在name=’Erica’的记录 */ public void testSelect() { String hql = " from Student where name='哈哈'"; try { Query query= session.createQuery(hql); List list=query.list(); Student student = (Student) list.get(0); Assert.assertEquals(student.getName(), "哈哈"); } catch (HibernateException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } } [b]问题补充:[/b] 数据库表的 create table student( student_id integer unsigned auto_increment, name varchar(45) not null, sex varchar(45) not null, age integer not null );
C#连接orcale数据库实现简单的日历模块
//小弟这两天才入职,要写一个简单的日程安排,之前一直用的sqlserver,最近才接触orcale,大致要实现,打开日历加载每天的日程,然后点击日期实现添加修改 //目前遇到的问题是,从数据库中读出来的字段怎么添加到calendar控件中去,然后点击跳转后如何添加 //大致思路有了,但是写了大半天还没写出来,如果有类似demo的能不能发给我参考一下 ``` protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { //定义连接数据库的字符串 string constring = "Data Source=192.168.27.122/orcl;User ID=cale;Password=cale;Unicode=True"; //进行连接 OracleConnection conn = new OracleConnection(constring); conn.Open();//打开指定的连接 OracleCommand com = conn.CreateCommand(); //执行的Sql语句 string date = "2016-04-1"; com.CommandText = "SELECT PLAN_CONTENT FROM CALE WHERE PLAN_DATE = To_Date('" + date + "','YYYY-MM-DD');"; OracleDataReader reader = com.ExecuteReader(); while (reader.Read()) { Label1.Text =reader.GetString(0); } reader.Close(); conn.Close(); } protected void Calendar1_SelectionChanged(object sender, DayRenderEventArgs e) { CalendarDay d = ((DayRenderEventArgs)e).Day; string id = d.ToString(); Response.Write("<script>window.open('addItem.aspx?id=" + id + "')</script>"); } ```
HibernateTemplate 怎么用
HibernateTemplate 中的 <br /> <br />public List findByNamedQuery(String queryName) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws DataAccessException <br /> <br />queryName 是什么呀?<br/><strong>问题补充</strong><br/><div class="quote_title">wangjia4202 写道</div><div class="quote_div">findByNamedQuery有三个从栽入方法: <br />findByNamedQuery(String queryName); <br />findByNamedQuery(String queryName,Object value); <br />findByNamedQuery(String queryName,Object values); <br />查看API说的很清楚 : <br />Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file. <br />意思说所 : <br />通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的! <br />定义语法如下: <br />&lt;query name="定义查询名"&gt; <br />&lt;![定义查询语句]]&gt; <br />&lt;/query&gt; <br />例1:findByNamedQuery(String queryName); <br />&lt;query name="all"&gt; <br />&lt;![from User]]&gt; <br />&lt;/query&gt; <br />findByNamedQuery("all"); <br /> <br />例2: findByNamedQuery(String queryName,Object value); <br />&lt;query name="byname"&gt; <br />&lt;![from User where u.name = ?]]&gt; <br />&lt;/query&gt; <br /> <br />findByNamedQuery("byname","tiger"); <br /> <br />例3: findByNamedQuery(String queryName,Object values); <br />&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = ? and u.age = ?]]&gt; <br />&lt;/query&gt; <br />findByNamedQuery("byNameAndAge",new Object[]{"tiger",18}); <br /> <br /> <br />HibernateTemplate 还有一个方法 : <br />findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values) <br /> <br />这是映射文件就要用: 而不是? <br />如: <br />&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = :name and u.age = :age]]&gt; <br />&lt;/query&gt; <br /></div> <br /> <br /> <br /> <br /> <br /> <br /> <br />把这些&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = ? and u.age = ?]]&gt; <br />&lt;/query&gt; 写到配置文件里吗?,那样会不会就写死了,缺少灵活性<br/><strong>问题补充</strong><br/><div class="quote_title">wangjia4202 写道</div><div class="quote_div">findByNamedQuery有三个从栽入方法: <br />findByNamedQuery(String queryName); <br />findByNamedQuery(String queryName,Object value); <br />findByNamedQuery(String queryName,Object values); <br />查看API说的很清楚 : <br />Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file. <br />意思说所 : <br />通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的! <br />定义语法如下: <br />&lt;query name="定义查询名"&gt; <br />&lt;![定义查询语句]]&gt; <br />&lt;/query&gt; <br />例1:findByNamedQuery(String queryName); <br />&lt;query name="all"&gt; <br />&lt;![from User]]&gt; <br />&lt;/query&gt; <br />findByNamedQuery("all"); <br /> <br />例2: findByNamedQuery(String queryName,Object value); <br />&lt;query name="byname"&gt; <br />&lt;![from User where u.name = ?]]&gt; <br />&lt;/query&gt; <br /> <br />findByNamedQuery("byname","tiger"); <br /> <br />例3: findByNamedQuery(String queryName,Object values); <br />&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = ? and u.age = ?]]&gt; <br />&lt;/query&gt; <br />findByNamedQuery("byNameAndAge",new Object[]{"tiger",18}); <br /> <br /> <br />HibernateTemplate 还有一个方法 : <br />findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values) <br /> <br />这是映射文件就要用: 而不是? <br />如: <br />&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = :name and u.age = :age]]&gt; <br />&lt;/query&gt; <br /></div> <br /> <br /> <br /> <br />在api上只写了个 <br />queryName - the name of a Hibernate query in a mapping file <br /> <br />我怎么才能知道它需要的是&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = :name and u.age = :age]]&gt; <br />&lt;/query&gt; 这样的配置呢 <br /> <br />api里好像很多都这样哎 <br /><br/><strong>问题补充</strong><br/><div class="quote_title">lerous 写道</div><div class="quote_div"><div class="quote_title">cheney_love 写道</div><div class="quote_div"><div class="quote_title">wangjia4202 写道</div><div class="quote_div">findByNamedQuery有三个从栽入方法: <br />findByNamedQuery(String queryName); <br />findByNamedQuery(String queryName,Object value); <br />findByNamedQuery(String queryName,Object values); <br />查看API说的很清楚 : <br />Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file. <br />意思说所 : <br />通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的! <br />定义语法如下: <br />&lt;query name="定义查询名"&gt; <br />&lt;![定义查询语句]]&gt; <br />&lt;/query&gt; <br />例1:findByNamedQuery(String queryName); <br />&lt;query name="all"&gt; <br />&lt;![from User]]&gt; <br />&lt;/query&gt; <br />findByNamedQuery("all"); <br /> <br />例2: findByNamedQuery(String queryName,Object value); <br />&lt;query name="byname"&gt; <br />&lt;![from User where u.name = ?]]&gt; <br />&lt;/query&gt; <br /> <br />findByNamedQuery("byname","tiger"); <br /> <br />例3: findByNamedQuery(String queryName,Object values); <br />&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = ? and u.age = ?]]&gt; <br />&lt;/query&gt; <br />findByNamedQuery("byNameAndAge",new Object[]{"tiger",18}); <br /> <br /> <br />HibernateTemplate 还有一个方法 : <br />findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values) <br /> <br />这是映射文件就要用: 而不是? <br />如: <br />&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = :name and u.age = :age]]&gt; <br />&lt;/query&gt; <br /></div> <br /> <br /> <br /> <br /> <br /> <br /> <br />把这些&lt;query name="byNameAndAge"&gt; <br />&lt;![from User where u.name = ? and u.age = ?]]&gt; <br />&lt;/query&gt; 写到配置文件里吗?,那样会不会就写死了,缺少灵活性</div> <br />写到配置文件中,是增强灵活性吧,不然写到哪,JAVA代码中吗?那样才是缺少灵活性!</div> <br /> <br /> <br />我是这个意思:要根据name和age查询的话要写一个&lt;![from User where u.name = ? and u.age = ?]]&gt; <br />如果有一天我要根据name和sex来查询一个人,岂不是要再改...有没有更灵活点写法 <br /> <br /><br /><strong>问题补充:</strong><br />那你就自己写个配置文件,然后自己读取它,然后再让hibernate查询嘛 <br /> <br />比如 <br />selectbynameandage=from User where u.name = ? and u.age = ? <br />selectbynameandsex=from User where u.name = ? and u.sex = ? <br /> <br />那怎么和Hibernate的query标签结合起来?
java界面里怎么将从数据库中按条件查询的结果显示在界面里。。急求
AirSelectpage.java: import javax.swing.*; import java.awt.event.*; import java.sql.*; public class AirSelectpage extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = -3695058594377827316L; JLabel l; JTextField t=new JTextField(15); JButton jok; JButton jBack; String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://localhost:1433; DatabaseName=AirTicket"; String USER="sa"; String PASSWORD="123"; public void asPage(){ JPanel p; p=new JPanel(); l=new JLabel("请输入航班号:"); jok=new JButton("确认"); jBack=new JButton("返回"); p.add(l);p.add(t);p.add(jok);p.add(jBack); add(p); setSize(600,400); setLocation(400,200); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); jok.addActionListener(this); jBack.addActionListener(this); } private Connection con; private Statement stmt; private ResultSet rs; public void actionPerformed(ActionEvent e){ if(e.getSource()==jok){ String airnumber=t.getText().trim(); if(airnumber.equals("")){ JOptionPane.showMessageDialog(this,"对不起,请输入航班号!","错误!",JOptionPane.ERROR_MESSAGE); } else{ try{ Class.forName(driverName); con=DriverManager.getConnection(url,USER,PASSWORD); String sql="select 旅客.航班号,座位号,姓名,旅客.票号,票价,起点,终点,起飞时间,到达时间 from 旅客,航班,机票 where 航班.航班号=旅客.航班号 and 旅客.票号=机票.票号 and 旅客.航班号='"+airnumber+"'";//执行的sql语句 stmt=con.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()){ new AirInformation(); } else{ JOptionPane.showMessageDialog(this,"航班号不存在,请重新输入!","错误!",JOptionPane.ERROR_MESSAGE); } } catch(ClassNotFoundException ex){ ex.printStackTrace(); } catch(SQLException ex){ ex.printStackTrace(); } } } if(e.getSource()==jBack){ Welpage wel=new Welpage(); wel.wPage(null); this.dispose(); } } } AirInformation.java: import javax.swing.*; import java.sql.*; public class AirInformation extends JFrame{ /** * */ private static final long serialVersionUID = -2888751890568230979L; // 定义组件 private JScrollPane scpDemo; private JTable tabDemo; // 构造方法 public AirInformation() throws SQLException{ // 窗体的相关属性的定义 super("JTable数据绑定示例"); this.setSize(1200,900); this.setLayout(null); this.setLocation(100,50); // 创建组件 this.scpDemo = new JScrollPane(); this.scpDemo.setBounds(10,50,1050,300); // 将组件加入到窗体中 add(this.scpDemo); // 显示窗体 this.setVisible(true); try{ // 获得连接 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");} catch(Exception e){} Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=AirTicket","sa","123"); // 建立查询条件 String sql = "select 旅客.航班号,座位号,姓名,旅客.票号,票价,起点,终点,起飞时间,到达时间 from 旅客,航班,机票 where 航班.航班号=旅客.航班号 and 旅客.票号=机票.票号 and 旅客.航班号='A3001'"; PreparedStatement pstm = conn.prepareStatement(sql); // 执行查询 ResultSet rs = pstm.executeQuery(); // 计算有多少条记录 int count = 0; while(rs.next()){ count++; } rs=pstm.executeQuery(); // 将查询获得的记录数据,转换成适合生成JTable的数据形式 Object[][] info = new Object[count][9]; count = 0; while(rs.next()){ info[count][0] = rs.getString("航班号"); info[count][1] = rs.getString("座位号"); info[count][2] = rs.getString("姓名"); info[count][3] = rs.getString("票号"); info[count][4] = Integer.valueOf(rs.getInt("票价")); info[count][5] = rs.getString("起点"); info[count][6] = rs.getString("终点"); info[count][7] = rs.getTimestamp("起飞时间"); info[count][8] = rs.getTimestamp("到达时间"); count++; } // 定义表头 String[] title = {"航班号","座位号","姓名","票号","票价","起点","终点","起飞时间","到达时间"}; // 创建JTable this.tabDemo = new JTable(info,title); this.tabDemo.getTableHeader(); // 将JTable加入到带滚动条的面板中 this.scpDemo.getViewport().add(tabDemo); } } 当航班号为A3001 A3002。。。时,是可以显示出来的 当航班号为t.getText()时,就一片空白,什么都显示不了
SSM数据库查询有值,但是到后台某个属性丢失!
现在有一个Blog类(博客类),一个BlogType类(博客类别类),一个查询语句 ``` @Select({"<script>" , "select * from t_blog", "<where>", "<if test=\"title!=null and title!='' \">", "and title like #{title}", "</if>", "<if test=\"typeId!=null and typeId!='' \">", "and typeId = #{typeId}", "</if>", "<if test=\"releaseDateStr!=null and releaseDateStr!='' \">", "and date_format(releaseDate,'%Y年%m月')= #{releaseDateStr}", "</if>", "</where>", "order by releaseDate desc", "<if test=\"start!=null and size!=null\">", "limit #{start},#{size}", "</if>", "</script>"}) @Results(id="BlogMap", value={ @Result(column="id", property="id", id=true), @Result(column="title", property="title"), @Result(column="releaseDate", property="releaseDate",jdbcType= JdbcType.TIMESTAMP), @Result(column="clickHit", property="clickHit"), @Result(column="summary ", property="summary"), @Result(column="replyHit", property="replyHit"), @Result(column="content", property="content"), @Result(column="keyWord", property="keyWord"), @Result(column="typeId", property="blogType", javaType=BlogType.class, one=@One(select="com.blog.dao.BlogTypeDao.findBlogTypeById")), }) public List<Blog> findBlog(Map<String,Object> paramMap); ``` 其中这个博客类中有一个博客类别类的对象。 sql查询结果: ![](https://img-ask.csdn.net/upload/201908/07/1565163436_239396.png) 这个sql语句查询结果是有summary的。但是到了后台赋值summary就null了 ![图片说明](https://img-ask.csdn.net/upload/201908/07/1565163560_57187.png) 问题不是那个类中的自定义对象,而是这个类的自己的String属性summary赋值失败。 ![图片说明](https://img-ask.csdn.net/upload/201908/07/1565163646_472616.png) 如图:BlogType对象是赋值成功的,就是这个summary失败了 下面是Blog和BlogType类 ``` package com.blog.entity; import java.io.Serializable; import java.util.Date; public class Blog implements Serializable{ /** * */ private static final long serialVersionUID = 1L; /**主键*/ private Integer id; /**标题*/ private String title; /**摘要*/ private String summary; /**发表时间*/ private Date releaseDate; /**点击数*/ private Integer clickHit; /**评论数*/ private Integer replyHit; /**内容*/ private String content; /**所属博客类型*/ private BlogType blogType; /**关键字*/ private String keyWord; /**纯文本格式的内容*/ private String contentNoTag; /**发表时间*/ private String releaseDateStr; /**博客数量*/ private Integer blogCount; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getReleaseDate() { return releaseDate; } public void setReleaseDate(Date releaseDate) { this.releaseDate = releaseDate; } public Integer getClickHit() { return clickHit; } public void setClickHit(Integer clickHit) { this.clickHit = clickHit; } public Integer getReplyHit() { return replyHit; } public void setReplyHit(Integer replyHit) { this.replyHit = replyHit; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public BlogType getBlogType() { return blogType; } public void setBlogType(BlogType blogType) { this.blogType = blogType; } public String getKeyWord() { return keyWord; } public void setKeyWord(String keyWord) { this.keyWord = keyWord; } public String getContentNoTag() { return contentNoTag; } public void setContentNoTag(String contentNoTag) { this.contentNoTag = contentNoTag; } public String getReleaseDateStr() { return releaseDateStr; } public void setReleaseDateStr(String releaseDateStr) { this.releaseDateStr = releaseDateStr; } public Integer getBlogCount() { return blogCount; } public void setBlogCount(Integer blogCount) { this.blogCount = blogCount; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } @Override public String toString() { return "Blog{" + "id=" + id + ", title='" + title + '\'' + ", summary='" + summary + '\'' + ", releaseDate=" + releaseDate + ", clickHit=" + clickHit + ", replyHit=" + replyHit + ", content='" + content + '\'' + ", blogType=" + blogType + ", keyWord='" + keyWord + '\'' + ", contentNoTag='" + contentNoTag + '\'' + ", releaseDateStr='" + releaseDateStr + '\'' + ", blogCount=" + blogCount + '}'; } } ``` ``` package com.blog.entity; import java.io.Serializable; /** * 博客类型 * */ public class BlogType implements Serializable { /** * */ private static final long serialVersionUID = 1L; /**主键*/ private Integer blogtypeid; /**类型名称*/ private String typeName; /**序号*/ private Integer orderNo; /**该类型下博客的数量*/ private Integer blogCount; public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } public Integer getOrderNo() { return orderNo; } public void setOrderNo(Integer orderNo) { this.orderNo = orderNo; } public Integer getBlogCount() { return blogCount; } public void setBlogCount(Integer blogCount) { this.blogCount = blogCount; } public Integer getBlogtypeid() { return blogtypeid; } public void setBlogtypeid(Integer blogtypeid) { this.blogtypeid = blogtypeid; } @Override public String toString() { return "BlogType{" + "blogtypeid=" + blogtypeid + ", typeName='" + typeName + '\'' + ", orderNo=" + orderNo + ", blogCount=" + blogCount + '}'; } } ``` 求问这个summary为什么不能放进对象里面?
hql 有问题
一个登陆操作 业务逻辑中 这样写查询不出数据 [code="java"]String hql = "from Account user where user.employeeName = '"+object.getEmployeeName()+"'"; [/code] 用 from Account 测试了下 可以查询出数据 问题就是处在这个hql 语句上, 可是这种写法我一直都在用, 没有出现过问题 , 哪位高人能指点下啊. [b]问题补充:[/b] 回一楼的 符合条件的数据确实是存在的 我使用sql语句可以查询出来在MyEclipse Database Explorer 中 例 如 select * from Account where EmployeeName = '刘总' 是确实能够查询出数据的. [b]问题补充:[/b] 回2楼的 user 我也换过了 不行 [b]问题补充:[/b] 回3楼的 我开始的时候说了 使用from Account 测试了 在System.out.println(list.size()); 的作用下, console 输入了 53 而使用String hql = "from Account user where user.employeeName = '"+object.getEmployeeName()+"'"; 什么结果是 0 [b]问题补充:[/b] 我在业务逻辑层的方法中这样写 [code="java"]public boolean isLoginSuccess(Account object) { // TODO Auto-generated method stub String hql = "from Account "; System.out.println("看看业务逻辑层的hql"+hql); List list = commonDAO.search(hql); System.out.println("业务逻辑层这边的城市"+list.size()); if(list.size() > 0){ Account item = (Account)list.get(0); if(object.getEmployeePwd().equals(item.getEmployeePwd())){ return true ; } } return false ; }[/code] 在DAO层方法是这样的 [code="java"]public List search(String hql) { // TODO Auto-generated method stub System.out.println("看看dao层的"+hql); List temp = super.getHibernateTemplate().find(hql); for(int i = 0 ; i < temp.size(); i++){ Account user = (Account)temp.get(i); System.out.println(user.getEmployeeName()); } System.out.println("看看dao层的"+temp.size()); return temp ; }[/code] 想用全部查询来测试是否能够成功查询出Account 表中的 数据 , 结果是可以的 业务逻辑中方法改回这样 String hql = "from Account account where account.employeeName = '"+object.getEmployeeName()+"'"; 就不行了 console 没输出数据 , list.size() 的输出结果是 0 我在ms sqlserver 的查询分析其中使用 select * from Account where EmployeeName = '刘总' 就查询出数据 自己也在dao层的方法中使用System.out.println(); 输出方法中使用 hql 语句, 都是很正常的, 会不会是hql 到了 ms sqlserver中 它的中文条件 '刘总' 被转义成了乱码 而不会从数据库中获取数据呢? [b]问题补充:[/b] 利用log4j。properties 文件 和 在 applicationContext.xml中设置了 <pro key="hibernate.show_sql">true</pro> 在 console 中输出了 被转义后的sql语句 [code="sql"]select account0_.EmployeeID as EmployeeID, account0_.EmployeeName as Employee2_0_, account0_.EmployeePwd as Employee3_0_, account0_.EmployeeRight as Employee4_0_, account0_.Remark as Remark0_ from xindunoadb.dbo.Account account0_ where account0_.EmployeeName='??×?'[/code] 很明显被转义后的查询条件成了乱码 这是怎么造成的呢? 我在web.xml是这样写的 [code="xml"]<filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>[/code] 怎么还会出现乱码呢? [b]问题补充:[/b] 清哪位帮忙看看 这个filter 的配置哪有问题 我以前是自己写filter 的 用了ssh 之后 才改用 提供了的这个 我另一个demo 中 也是使用spring 提供的类来做的, 是成功的了 没有道理这个不行啊 [b]问题补充:[/b] 在项目的lib 中 添加了jtds 1.2.jar 也修改applicationcontext.xml中的datasource 配置 , 结果重启tomcat 访问项目就报错了, 说无法创建FormBean了 不得以改回去了 [b]问题补充:[/b] [quote]CharacterEncodingFilter中定义的和jsp页面的编码不一致吧 zkl_1987 (初级程序员) 2009-04-09 采纳为答案[/quote] 这个问题比较低级了 , 我也回头查了下 , 没有不统一的问题, 都是UTF-8 [b]问题补充:[/b] [quote]囧rz 结果是编码问题 - -~ 我怎么觉得是你的数据库编码有问题捏? 把建表sql发上来看看。 问题应该就是在数据库的编码上了。 iampurse (中级程序员) 2009-04-09[/quote] 这个数据库不是我设计的 是已走的"前辈"留下的 没有建库脚本就没有办法了么? [b]问题补充:[/b] [quote]突然想起来的,不知道你配置没有……我觉得你应该配置了,但是除此之外想不出其它原因: Xml代码 <prop key="connection.characterEncoding">utf8</prop> <prop key="connection.characterEncoding">utf8</prop> hibernate的connection.characterEncoding属性。 Snow_Young (中级程序员) 2009-04-09[/quote] 这个我没有写... 请问这个配置是写在SessionFactory 或者 dateSource 中的哪个部分? [b]问题补充:[/b] [quote]突然想起来的,不知道你配置没有……我觉得你应该配置了,但是除此之外想不出其它原因: Xml代码 <prop key="connection.characterEncoding">utf8</prop> hibernate的connection.characterEncoding属性。 Snow_Young (中级程序员) [/quote] 我配置 [code="xml"] <prop key="connection.characterEncoding">utf8</prop> <prop key="connection.useUnicode">true</prop> [/code] 没有变化..... 复制一下我使用log4j.properties 在consosle 输出的结果 : [code="java"]08:56:02,046 DEBUG QueryTranslatorImpl:177 - HQL: from com.newshieldoa.common.pojo.Account account where account.employeeName = '刘总' and account.employeePwd = '.' 08:56:02,046 DEBUG QueryTranslatorImpl:178 - SQL: select account0_.EmployeeID as EmployeeID, account0_.EmployeeName as Employee2_0_, account0_.EmployeePwd as Employee3_0_, account0_.EmployeeRight as Employee4_0_, account0_.Remark as Remark0_ from xindunoadb.dbo.Account account0_ where account0_.EmployeeName='??×?' and account0_.EmployeePwd='.'[/code] [b]问题补充:[/b] [quote] Java代码 String hql = "from Account user where user.employeeName = :employeeName"; Query query = session.createQuery(hql) .setString("employeeName", object.getEmployeeName()); String hql = "from Account user where user.employeeName = :employeeName"; Query query = session.createQuery(hql) .setString("employeeName", object.getEmployeeName()); 另外你分数也给的太抠门了吧…… Snow_Young (中级程序员)[/quote] 呵呵 不是我抠门 我早就没有分了, 发帖之前就是 0 个金币, 我要是有200个 金币 早就全拿出来了 .... 您这个方法 我还没试 毕竟我习惯是在业务逻辑层把hql组织好传递进DAO层的, 您这个方法全是在DAO层做的 [b]问题补充:[/b] [quote]拼的和 命名的都一样的效果吧 - -~ 我还是觉得是你的数据库的问题。 数据库别人留下的 你也可以改的啊 alert 一下就好了嘛 iampurse (中级程序员) 2009-04-10[/quote] 我刚刚吧原来2000 的数据库 转移到了 2005 , 很遗憾 还是不行, 跟数据库没有关系了... [b]问题补充:[/b] 我的上帝啊 终于不是乱码了 !!!!!!!!!!!!!!11 在 applicationContext.xml 中 sessionFactory 的配置信息中 配置了这样一段代码就搞定了 [code="xml"] <prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop>[/code] 快2天了 终于把这该死的问题搞定了. 做个标记 ,为自己, 为别人.
Mybatis小练习 报错 求大神指导,信息详尽
# UserMapper ``` public interface UserMapper { //根据id查询用户信息 public User findUserById(int id) throws Exception; //根据用户名列查询用户列表 public List<User> findUserByName(String name)throws Exception; //插入用户 public void insertUser(User user)throws Exception; } ``` # UserMapper.xml ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址 --> <mapper namespace="com.neuedu.mapper.UserMapper"> <!-- 在 映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过 select执行数据库查询 id:标识 映射文件中的 sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。 --> <select id="findUserById" parameterType="int" resultType="user"> SELECT * FROM user WHERE id=#{value} </select> <!-- 根据用户名称模糊查询用户信息,可能返回多条 resultType:指定就是单条记录所映射的java对象 类型 ${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中。 使用${}拼接sql,引起 sql注入 ${value}:接收输入 参数的内容,如果传入类型是简单类型,${}中只能使用value --> <select id="findUserByName" parameterType="java.lang.String" resultType="com.neuedu.pojo.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> <!-- 添加用户 parameterType:指定输入 参数类型是pojo(包括 用户信息) #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值 --> <insert id="insertUser" parameterType="com.neuedu.pojo.User"> <!-- 将插入数据的主键返回,返回到user对象中 SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键 keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性 order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序 resultType:指定SELECT LAST_INSERT_ID()的结果类型 --> insert into user(id,username,birthday,sex,address) values (seq_user.nextval,#{username},#{birthday},#{sex},#{address}) <!-- 插入数据后,返回自动增长列的ID值,将sql语句的返回值赋给parameterType绑定对象的ID属性 MySQL中使用: select LAST_INSERT_ID() --> <selectKey keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() <!--select seq_user.currval from dual--> </selectKey> <!-- 使用mysql的uuid()生成主键 执行过程: 首先通过uuid()得到主键,将主键设置到user对象的id属性中 其次在insert执行时,从user对象中取出id属性值 --> <!-- <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> SELECT uuid() </selectKey> insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}) --> </insert> <!-- 删除 用户 根据id删除用户,需要输入 id值 --> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from user where id=#{id} </delete> <!-- 根据id更新用户 分析: 需要传入用户的id 需要传入用户的更新信息 parameterType指定user对象,包括 id和更新信息,注意:id必须存在 #{id}:从输入 user对象中获取id属性值 --> <update id="updateUser" parameterType="com.neuedu.pojo.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update> </mapper> ``` # Tset ``` public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; // 此方法是在执行testFindUserById之前执行 @Before public void setUp() throws Exception { // 创建sqlSessionFactory // mybatis配置文件 String resource = "config/SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } @Test public void testFindUserById() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 User user = userMapper.findUserById(1); System.out.println(user); } @Test public void testFindUserByName() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 List<User> list = userMapper.findUserByName("袁超"); sqlSession.close(); System.out.println(list); } } ``` # 报错信息 ``` DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. DEBUG [main] - Class not found: org.jboss.vfs.VFS DEBUG [main] - JBoss 6 VFS API is not available in this environment. DEBUG [main] - Class not found: org.jboss.vfs.VirtualFile DEBUG [main] - VFS implementation org.apache.ibatis.io.JBoss6VFS is not valid in this environment. DEBUG [main] - Using VFS adapter org.apache.ibatis.io.DefaultVFS DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Reader entry: User.class DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo/User.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo/User.class DEBUG [main] - Reader entry: ���� 1 N DEBUG [main] - Checking to see if class com.neuedu.pojo.User matches criteria [is assignable to Object] DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Reader entry: UserMapperTest.class DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper/UserMapperTest.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper/UserMapperTest.class DEBUG [main] - Reader entry: ���� 1 a DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Reader entry: UserMapper.class DEBUG [main] - Reader entry: UserMapper.xml DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.class DEBUG [main] - Reader entry: ���� 1    findUserById (I)Lcom/neuedu/pojo/User; DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.xml DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.xml DEBUG [main] - Reader entry: <?xml version="1.0" encoding="UTF-8" ?> DEBUG [main] - Checking to see if class com.neuedu.mapper.UserMapperTest matches criteria [is assignable to Object] DEBUG [main] - Checking to see if class com.neuedu.mapper.UserMapper matches criteria [is assignable to Object] DEBUG [main] - Opening JDBC Connection DEBUG [main] - Created connection 209833425. DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@c81cdd1] DEBUG [main] - ==> Preparing: SELECT * FROM T_USER WHERE username LIKE '%袁超%' DEBUG [main] - ==> Parameters: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist ### The error may exist in com/neuedu/mapper/UserMapper.xml ### The error may involve com.neuedu.mapper.UserMapper.findUserByName-Inline ### The error occurred while setting parameters ### SQL: SELECT * FROM T_USER WHERE username LIKE '%袁超%' ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at com.sun.proxy.$Proxy3.findUserByName(Unknown Source) at com.neuedu.mapper.UserMapperTest.testFindUserByName(UserMapperTest.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.junit.runner.JUnitCore.run(JUnitCore.java:160) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) at com.mysql.jdbc.Util.getInstance(Util.java:383) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) at com.sun.proxy.$Proxy5.execute(Unknown Source) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ... 29 more ``` # SqlMapConfig.xml ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载属性文件 --> <properties resource="db.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!-- <property name="jdbc.driver" value=""/> --> </properties> <!-- 全局配置参数,需要时再设置 --> <!-- <settings> </settings> --> <!-- 别名定义 --> <typeAliases> <!-- 针对单个别名定义 type:类型的路径 alias:别名 --> <!-- <typeAlias type="com.neuedu.mybatis.po.User" alias="user"/> --> <!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) --> <package name="com.neuedu.pojo"/> </typeAliases> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 加载 映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> <!--通过resource方法一次加载一个映射文件 --> <!-- <mapper resource="sqlmap/User.xml"/> --> <!-- 通过mapper接口加载单个 映射文件 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 上边规范的前提是:使用的是mapper代理方法 --> <!-- <mapper class="com.neuedu.mapper.UserMapper"/> --> <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 上边规范的前提是:使用的是mapper代理方法 --> <package name="com.neuedu.mapper"/> </mappers> </configuration> ``` # User ``` public class User { //属性名和数据库表的字段对应 private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 private String address;// 地址 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 getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } } ``` 也不知道为什么,明明已经在UserMapper.xml里面把表名改了,但是报错信息里查找的还是T-user表 求大神指导!感恩! # 问题已解决 在maven文件里加上下面的代码 ``` <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*Mapper.xml</include> </includes> </resource> </resources> ```
C#.net中 公用string字符串的赋值失败问题
**我要做的是选择底下GridView的内容 然后点击提交按钮后 把GridView中的课程ID提交到数据库保存下来** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967328_266399.png) **问题出在这个公用字符串CID1 在GRIDView中选择时 CID1 能成功记录所选的信息 (图一断点验证)** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967249_929930.png) **但是点击提交按钮后CID1变成空(图二断点验证)** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967297_993480.png) **之前问过类似的问题,有个前辈是说点击了asp:button后 页面重新加载 刷新CID1 经过改造我现在这些操作过程是直接选择GRIDVIEW中的内容 再点击提交 中间没有点击按钮的操作 怎么会刷新呢 然后在网上查好像是要用ispostback来做 但是ispostback 只能用在方法里使用 在我定义这个字符串的位置不能够使用 希望前辈们能教教我 如何解决这个问题 或者能教教我如何点击GRIDVIEW中的内容 如何把CELL[0]中的内容传到底下submit的方法**里 **下面是后端代码**: ``` using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class HTML_ChooseCourse : System.Web.UI.Page { string CID1=""; protected void Page_Load(object sender, EventArgs e) { } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { //记录GridView中选择的内容,到下面提交时要用到 int index = GridView1.SelectedIndex; this.LabTuesday.Text = GridView1.Rows[index].Cells[1].Text; CID1=GridView1.Rows[index].Cells[0].Text.ToString(); } public static void Messagebox(string message) { string strScript = "<script type=\"text/javascript\" language=\"javascript\">alert('" + message + "')</script>"; System.Web.UI.Page thisPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; thisPage.ClientScript.RegisterStartupScript(thisPage.GetType(), "ShowMsgBox", strScript); } protected void BtnSubmit_Click(object sender, EventArgs e) { if ( this.LabTuesday.Text != "") { string connectionstr = "Data Source=DESKTOP-79153UB;Initial Catalog=db_StudentManage;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionstr); connection.Open(); SqlCommand command = new SqlCommand(); command.Connection = connection; //将上面记录的信息记录到数据库中 上面选择GRIDVIEW中的信息 记录下的 CID1 到这个方法就无内容了 command.CommandText = string.Format("insert into tb_ChooseCourse values ('{0}','{1}','周二')", CID1.ToString(),Session["ID"].ToString()); int count1 = command.ExecuteNonQuery(); if (count1== 1) Messagebox("提交成功"); else Messagebox("提交失败,请重试!"); connection.Close(); } else Messagebox("有信息为空,请继续选课!"); } } ``` **下面是前端代码:** ``` <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChooseCourse1.aspx.cs" Inherits="HTML_ChooseCourse" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>选课</title> <style> .TopDiv { border: 0px solid black; width:100%; height: 60px; position: absolute; left: 20px; top: 20px; text-align:center; } .MiddleDiv { border: 0px solid black; width: 680px; height: 290px; position: absolute; left:320px; top: 180px; } .SecondDiv { border: 0px solid black; width: 894px; height: 50px; position: absolute; left:320px; top: 100px; } .btn { border-style: none; border-color: inherit; border-width: medium; background-color: #62a8ea; line-height: 45px; color: white; cursor: pointer; font-size: 16px; font-weight: bold; } </style> </head> <body style="background-color:#E6E6E6"> <form id="form1" runat="server"> <div class="TopDiv" style="font-family:幼圆;font-size:50px"> 选课 </div> <div class="SecondDiv"> <table style="background-color:#E6E6E6"> <tr> <td><asp:Button ID="BtnTuesday" CssClass="btn" runat="server" Text="周二" Height="50px" Width="90px" Font-Underline="False" OnClientClick="return false" /></td> <td style="font-family:幼圆;background-color:#E6E6E6;text-align:center"><asp:Label ID="LabTuesday" runat="server" Height="50px" Width="490px" BackColor="Silver" ></asp:Label></td> <td><asp:Button ID="BtnSubmit" CssClass="btn" runat="server" Text="提交" Height="50px" Width="90px" OnClick="BtnSubmit_Click"/></td> </tr> </table> </div> <div class="MiddleDiv"> <asp:GridView style="text-align:center;font-family:幼圆;" Height="370px" Width="676px" ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="CId" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" > <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="CId" HeaderText="课程ID" ReadOnly="True" SortExpression="CId" /> <asp:BoundField DataField="CName" HeaderText="课程姓名" SortExpression="CName" /> <asp:BoundField DataField="TID" HeaderText="负责教师ID" SortExpression="TID" /> <asp:CommandField HeaderText="操作" ShowSelectButton="True" /> </Columns> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> <br /> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:db_StudentManageConnectionString %>" DeleteCommand="DELETE FROM [tb_Course] WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))" InsertCommand="INSERT INTO [tb_Course] ([CId], [CName], [TID]) VALUES (@CId, @CName, @TID)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [tb_Course]" UpdateCommand="UPDATE [tb_Course] SET [CName] = @CName, [TID] = @TID WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))"> <DeleteParameters> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="CId" Type="String" /> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </UpdateParameters> </asp:SqlDataSource> </div> </form> </body> </html> ```
ext表格分页不成功, 显示有22条记录,一共两页,但是却把所有数据都放在同一页上显示了.
如图所示: [img]http://dl.iteye.com/upload/attachment/186170/9ac17176-f3d8-3d25-b5c6-cecb308cd9e3.jpg[/img] 我计划每页显示20天, 查询出22条记录, 应该把多余的放在第二页显示. 但是实际上所有数据都出现在第一页了. 我的关键代码: 1. 定义了store. 分页参数是0,20 [code="js"] var store = new Ext.data.JsonStore({ url:'xxxxx', baseParams:{start:0, limit:20}, totalProperty: "totalProperty", root: "root", idProperty: "MYID", fields:[ {name: 'MYID', mapping: 'MYID'} ... ] }); [/code] 2. pageingToolbar. 每页限制20条. 使用的store:store [code="js"] bbar: new Ext.PagingToolbar({ pageSize:20 ,store:store ,displayInfo:true ,displayMsg:'显示第{0}数据到{1},一共有{2}条' ,emptyMsg:'没有记录' }); [/code] 3. java中返回给store的方法构造如下 [code="java"] // 查询得到所有记录 List<Map<String, Object>> resultList = sqlMapClient.queryForList("abc"); if(null == resultList){return null;} // 组装返回结果 Map<String, Object> resultMap = new HashMap<String, Object>(); // 记录条数 resultMap.put("totalProperty", resultList.size()); // root resultMap.put("root", resultList); // MYID是我记录中的一个字段 resultMap.put("id", "MYID"); // 然后将这个resultMap转为json返回给前台 [/code] 不明白, 为什么我的分页不成功, 我拿官网上列子和我对比, 也没找到区别.. 另外再多请教一个问题, EXT的分页是内存分页么. 我看官网的例子[url]http://www.extjs.com/deploy/dev/examples/grid/paging.html[/url], 它访问的URL中有6000多的记录. 这么多记录全加到内存中再分页的? [b]问题补充:[/b] ------------------------------------------------------- OK. hearken01: 你的意思是 [code="java"] for(int i = start; i < (list.size() - limit) > 0 ? limit : list.size(); i++) { // then return these results ? } [/code] 这是内存分页的做法.. 定义了baseParams:{start:0, limit:20} 当点下了下一页的时候, 使start = 21. and go on 既然, start limit已经被传到了java中, 那我可否更进一步, 赋给SQL [code="sql"] select * from mytab where offset = #start# and limit = #limit# [/code] 这就是数据库分页了. [color=red]但是这样有个问题.. 怎么才能到最后一页呢[/color] [b]问题补充:[/b] 如果使用了数据库分页的话, 返回的总是当前页数据, 无法计算totalProperty, 也就不知道有几页了啊~ [b]问题补充:[/b] 谢谢, 我已经做出来了. 最后采用的数据库分页. 方法是: 1. 把start, limit一直传到sql中, 数据库查询出记录. 2. 多写一条SQL. 把记录总条数查出来. 3. 组转一个Map. root指向记录集合. totalProperty指向总条数. 这样, 每次点上一页, 下一页就能数据库分页. 压力转移到了数据库上. 不过这样做还有个暇疵. 每次查询的时候, 都要多一条SQL去查总记录数. 由于查询是不加锁的, 万一当我查询出记录后, 另一个操作把记录全干掉...就那啥杯具了. 不知大大有啥好办法没?
如何将my eclipse查询MySQL的结果传给客户端。
下面是查询数据库的代码数据库 public boolean Seekaim(SeekUser seekid){ String word="select * from seeker where userID like '%"+seekid.getSeek_name()+"%'";//生成一条sql语句 try { Statement statement=connection.createStatement();//创建一个Statement对象 ResultSet resultSet=statement.executeQuery(word);//查询数据可通过Statement接口的executeQuery()方法执行SQL语句 //executeQuery()方法用于执行SELECT查询语句,将放回一个ResultSet型的结果集。通过遍历查询结果集的内容,才可获取SQL语句执行的查询结果。 //定义三个string类型的量 String id,name; while(resultSet.next()){//遍历结果集 id=resultSet.getString("userID"); System.out.println("查询的用户是"+id); name=resultSet.getString("userName"); System.out.println("查询用户的昵称是"+name); } /* 1:Result接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。 2:PreparedStatement接口中的excuteQuery()方法,在此PreparedStatement对象执行sql查询语句,返回结果为查询结果集Result对象 3:next()将指针向下移一行 4:ResultSet对象的getXXX()方法可获取查询结果集中数据。由于ResultSet中保存的数据是表的形式,因此可通过使用getXXX()方法指定列的序号与列的名称。 id=rs.getInt("id");//获得id username=rs.getString(2);// password=rs.getString("password");// age=rs.getInt(4);// sex=rs.getInt(5);// 仔细体会就可以明白,getXXX(参数);参数既可以是列的名称还可以是第几列的数字。 */ if (resultSet.next())//resultSet.next();如果为真代表查询结果有值,为假代表查询结果没有值 { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } ``` ``` 已经查到了想要的数据,现在想把数据返回给安卓客户端我要怎么写呀,顺便贴上servlet的代码 ``` import java.io.DataOutputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SeekServlet extends HttpServlet { /** * Constructor of the object. */ public SeekServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取request中的参数(登陆)括号里面是安卓客户端里面构建url时写入的参数,保持一致,绿色的那个 /* *********************************搜索用户****************************************************************** */ //获取request中的参数 String seek_id = request.getParameter("edit_id"); //接收客户端消息处理 SeekUser seek3=new SeekUser(); seek3.setSeek_name(seek_id); //向数据库查询对象 MyDB_user mUser3=new MyDB_user(); mUser3.Seekaim(seek3); //返回查询结果 //创建一个DataOutputStream对象 DataOutputStream dos1=new DataOutputStream(response.getOutputStream()); if(mUser3.Seekaim(seek3)) { } } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 输出流 PrintWriter out = response.getWriter(); // 设置编码形式 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); // 获取传入的数据 String id = request.getParameter("id"); System.out.println("UserInfoServlet: id = " + id); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } } ``` 查询的结果已经可以遍历出来了但是不知道怎么传回给安卓端。Seekaim方法是在servlet中调用的有没有大佬来拯救一下小菜鸡
ext分页,后台如何处理?
我是根据查询条件从数据库中取出满足条件的数据,保存到list中,用了json-plugin插件,所以直接把从数据返回的List类型数据赋值给List类型的参数items直接传到前台gridpanel中的root接收。我现在想实现的是根据查询的结果进行分页显示,如图,我得到12条结果,我现在想每页显示5条,我现在不知道怎样根据start和limit参数来处理。在网上搜了很多,始终搞不清楚原理。 [color=red][size=medium]这里是grid定义[/size][/color] [code="java"] //定义数据集对象 var store = new Ext.data.Store({//配置分组数据集 baseParams : { infoLinkman :'' }, reader: new Ext.data.JsonReader({ totalRecords : "results", totalProperty: "results", root : "items", fields : [ {name: 'id'}, {name: 'infoType'}, {name: 'infoTitle'}, {name: 'infoContent'}, {name: 'infoLinkman'}, {name: 'infoPhone'}, {name: 'infoEmail'}, {name: 'infoDate'}, {name: 'infoState'}, {name: 'infoPayfor'} ] }), proxy : new Ext.data.HttpProxy({ url : 'ShowList.action' }) }); store.load({ params : { start : 0, limit : 5 } }); var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), sm, {header: "ID", width: 100, dataIndex: 'id', sortable: true}, {header: "信息类别", width: 100, dataIndex: 'infoType', sortable: true}, {header: "信息标题", width: 100, dataIndex: 'infoTitle', sortable: true}, {header: "信息内容", width: 100, dataIndex: 'infoContent', sortable: true}, {header: "联系人", width: 100, dataIndex: 'infoLinkman', sortable: true}, {header: "联系电话", width: 100, dataIndex: 'infoPhone', sortable: true}, {header: "E-mail地址", width: 100, dataIndex: 'infoEmail', sortable: true}, {header: "发布时间", width: 130, dataIndex: 'infoDate', sortable: true}, {header: "审核状态", width: 100, dataIndex: 'infoState', sortable: true}, {header: "付费状态", width: 100, dataIndex: 'infoPayfor', sortable: true}]); //创建Grid表格组件 var grid = new Ext.grid.GridPanel({ title : '列表', applyTo : 'grid-div', width:1200, height:400, frame:true, store : store, cm : cm, sm : sm, tbar : [{ xtype : 'tbtext', text : '联系人查询' }, { xtype : 'textfield', id : 'infoLinkman', emptyText : '联系人', width : 100 }, { xtype : 'button', text : '查询', handler:find }, '-', { xtype : 'button', text : '添加', handler:add }, '-', { xtype : 'button', text : '编辑', handler:update }, '-', { xtype : 'button', text : '删除', handler:remove }], bbar : new Ext.PagingToolbar({//分页工具栏 store : store, pageSize : 5, displayInfo : true, displayMsg : '第 {0} 条到 {1} 条,一共 {2} 条', emptyMsg : "没有记录" }) }); [/code] [color=red][size=medium]这里是查询函数[/size][/color] [code="java"] function find() { var store = new Ext.data.Store({//配置分组数据集 baseParams : { infoLinkman : Ext.getCmp('infoLinkman').getValue() }, reader: new Ext.data.JsonReader({ totalRecords : "results", root : "items", fields : [ {name: 'id'}, {name: 'infoType'}, {name: 'infoTitle'}, {name: 'infoContent'}, {name: 'infoLinkman'}, {name: 'infoPhone'}, {name: 'infoEmail'}, {name: 'infoDate'}, {name: 'infoState'}, {name: 'infoPayfor'} ] }), proxy : new Ext.data.HttpProxy({ url : 'ShowList.action' }) }); store.load({ params : { start : 0, limit : 5 } }); grid.reconfigure(store, cm); } [/code] [color=red][size=medium]这里是action[/size][/color] [code="java"] public class ShowListAction extends ActionSupport { private String infoLinkman; private long results; private List items; String start; String limit; public String execute() throws Exception{ this.results = 20; // int top1=Integer.parseInt(start); // int top2=Integer.parseInt(limit); Object[] params={infoLinkman}; String sql="SELECT * FROM tb_info WHERE (info_linkman=?) ORDER BY info_date ASC"; OpDB myOp=new OpDB(); System.out.println(infoLinkman); items=myOp.OpListShow(sql, params); return SUCCESS; } } [/code] [b]问题补充:[/b] 若后台是sql server 2000 sql语句该怎么写呢?好像用mysql的话这个问题比较好解决。还有我那个查询条件 联系人的参数我通过查询按钮在find方法里传过去,但我要点击下一页按钮的话文本框里的这个参数好像就传不过去了,每次传递的参数只是limit和start,这个查询条件参数带不过去。这个参数该怎么传递呢,在更新页码的时候? [b]问题补充:[/b] 现在就不处理吧,但是他也没有自动分页啊,12条数据他是全部显示出来了啊 [b]问题补充:[/b] [quote]来进行分页,不过要用两条select语句联合起来用[/quote] 比如总共12条数据,去6-10条,sql怎么写呢? [b]问题补充:[/b] [color=red][size=medium] 现在的问题是,我想根据查询条件得到结果,并将符合条件的结果条数动态的传给results。我在第一次显示gridpanel时它就调用了action,因为没有参数联系人参数传入,执行sql语句后满足条件的是0条,这时results值就被赋值0,因此页数就只有一页。此时我再点击查询按钮查询,可以得到第一页的前五条数据,但下面的分页按钮只有一页,无法点击下一页。<br> 第二个问题,即使现在可以点击下一页,那又怎样才能将我的查询条件这个参数带过去呢,不然返回的还是零条。<br> 第三个问题,即使现在点击第二页按钮时,可以返回第6-10条数据,但根据下面的摄sql语句,由于是用id进行分页的,而id是没有重复的,查询操作会直接前5条记录去除,从数据库的第6条开始查询满足条件的记录,而这必然会使第二页得到的内容会与第一页的内容有可能重复(若前5页没有符合条件的内容的话,第1页和第2页内容就会完全一样。)<br> [color=brown][/color] [/size][size=small]谢谢各位热心解答,问题讲得很啰嗦,不知道讲清楚没有,我基础不太好,这个问题搞了好久也没弄出个所以然来,实在不知道怎么办了。[/size][/color] [code="java"] public String execute() throws Exception{ int top1=Integer.parseInt(start); int top2=Integer.parseInt(limit); Object[] params={infoLinkman}; // String sql="SELECT * FROM tb_info WHERE (info_linkman=?) ORDER BY info_date ASC"; String sql = "select top "+top2+" * from tb_info where (info_linkman=?)and (id not in (select top "+top1+" id from tb_info order by id asc )) order by id asc"; // String sql = "select top 5 * from tb_info where (info_linkman=?)and (id not in (select top 10 id from tb_info order by id asc )) order by id asc"; OpDB myOp=new OpDB(); items=myOp.OpListShow(sql, params); String sql2="select count(*) count from tb_info where (info_linkman=?)"; results = myOp.getUserCount(sql2, params); // results=11; System.out.println("符合条件记录条数:"+results); System.out.println(infoLinkman); return SUCCESS; } [/code] [b]问题补充:[/b] 加上那段代码后提示[color=red]Ext.getCmp("infoLinkman") is undefined [/color] 其实就是想根据查询条件得到结果集合,但是如果数据量很大,就需要分页,现在这个分页很难实现吗,这个应该也是很常见的需求吧 [b]问题补充:[/b] [size=medium][color=red]奇怪,上次补充的问题不见了。前段时间网络一直不好。我把load和beforeload函数放到gridpanel定义后结果就正常了,不报错。 现在我把results定死,赋值为11,这样初始分页栏会显示有3页,第一页显示根据查询条件得到的5个结果,点击第二页时,从后台看,action可以得到查询参数并返回5条结果,但是gridpanel里的数据并没有更新,现在的问题是如何让gridpanel根据每次返回的数据动态更新表格。[/color][/size] [b]问题补充:[/b] [color=red][size=small]第一次默认返回数据为:{"[/[/size]color]infoLinkman":"","infoType":null,"items":[],"limit":"5","results":11,"start":"0"} [color=red][size=small]第二次根据查询数据得到数据为:{"[/[/size]color]infoLinkman":"鑺宠姵","infoType":null,"items":[{"[color=red]id[/color]":114,"infoContent":"姹傝喘淇℃伅鍐呭","infoDate":"2007-12-26 11:47:46","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"姹傝喘淇℃伅鏍囬","infoType":4},{"id":115,"infoContent":"鎷涘晢寮曡祫鍐呭","infoDate":"2007-12-26 11:51:54","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"鎷涘晢寮曡祫鏍囬","infoType":5},{"id":116,"infoContent":"鍏瘬淇℃伅鍐呭","infoDate":"2007-12-26 11:52:36","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"鍏瘬淇℃伅鏍囬","infoType":6},{"id":117,"infoContent":"姹傝亴淇℃伅鍐呭","infoDate":"2007-12-26 11:53:03","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"姹傝亴淇℃伅鏍囬","infoType":7},{"id":118,"infoContent":"瀹舵暀淇℃伅鍐呭","infoDate":"2007-12-26 11:53:40","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"瀹舵暀淇℃伅鏍囬","infoType":8}],"limit":"5","results":11,"start":"0"} [size=small][color=red]点击第二页后得到数据为:[/color][/size] {"infoLinkman":"鑺宠姵","infoType":null,"items":[{"[color=red]id[/color]":116,"infoContent":"鍏瘬淇℃伅鍐呭","infoDate":"2007-12-26 11:52:36","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"鍏瘬淇℃伅鏍囬","infoType":6},{"id":117,"infoContent":"姹傝亴淇℃伅鍐呭","infoDate":"2007-12-26 11:53:03","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"姹傝亴淇℃伅鏍囬","infoType":7},{"id":118,"infoContent":"瀹舵暀淇℃伅鍐呭","infoDate":"2007-12-26 11:53:40","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"瀹舵暀淇℃伅鏍囬","infoType":8},{"id":119,"infoContent":"杞﹁締淇℃伅鍐呭","infoDate":"2007-12-26 11:54:05","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"杞﹁締淇℃伅鏍囬","infoType":9},{"id":120,"infoContent":"鍑哄敭淇℃伅鍐呭","infoDate":"2007-12-26 11:54:41","infoEmail":"888@89*.com","infoLinkman":"鑺宠姵","infoPayfor":"1","infoPhone":"13255******","infoState" :"1","infoTitle":"鍑哄敭淇℃伅鏍囬","infoType":10}],"limit":"5","results":11,"start":"5"} [size=small][color=red]grid定义:[/color][/size] [code="java"]var grid = new Ext.grid.GridPanel({ title : '列表', applyTo : 'grid-div', width:1200, height:500, frame:true, store : store, cm : cm, sm : sm, tbar : [{ xtype : 'tbtext', text : '联系人查询' }, { xtype : 'textfield', id : 'infoLinkman', emptyText : '联系人', width : 100 }, { xtype : 'button', text : '查询', handler:find }, '-', { xtype : 'button', text : '添加', handler:add }, '-', { xtype : 'button', text : '编辑', handler:update }, '-', { xtype : 'button', text : '删除', handler:remove }], bbar : new Ext.PagingToolbar({//分页工具栏 store : store, pageSize : 5, displayInfo : true, displayMsg : '第 {0} 条到 {1} 条,一共 {2} 条', emptyMsg : "没有记录" }) }); store.on('beforeload', function() { //Ext.data.JsonStore读入数据之前的事件,让store在读入数据之前设置参数。 this.baseParams = { infoLinkman : Ext.getCmp('infoLinkman').getValue() }; }); store.load({ params : { start : 0, limit : 5 } }); grid.reconfigure(store, cm);[/code] [b]问题补充:[/b] 这句代码加不加都一样没反应 [b]问题补充:[/b] store内容怎么检查啊,不会啊 [b]问题补充:[/b] [size=medium][color=blue]这个问题先放一放了,以后再接着研究。谢谢所有热心的朋友。[/color][/size]
Spring FactoryBean的使用
我碰到一个比较纳闷的问题: 我定义了一个类为: Java code /** * AcegiCacheManagerFactoryBean 负责初始化缓存后生成AcegiCacheManager * 调用 authenticationService 来获取资源和用户实例,并加入UserCache 和 ResourceCache 中 * @author zhanghg * */ public class AcegiCacheManagerFactoryBean implements FactoryBean,InitializingBean { protected final Log logger = LogFactory.getLog(getClass()); private AcegiCacheManager acegiCacheManager; private AuthenticationService authenticationService; private UserCache userCache; private ResourceCache resourceCache; public Object getObject() throws Exception { return this.acegiCacheManager; } @SuppressWarnings("unchecked") public Class getObjectType() { return (this.acegiCacheManager != null ? this.acegiCacheManager.getClass() : AcegiCacheManager.class); } public boolean isSingleton() { return true; } public void afterPropertiesSet() throws Exception { logger.info("Initializing SecurityCacheManager"); Assert.notNull(userCache,"userCache should not be null"); Assert.notNull(resourceCache,"resourceCache should not be null"); Assert.notNull(authenticationService,"Authentication Service should not be null"); //初始化缓存 List<Staff> users =authenticationService.getUsers(); for (Iterator iter = users.iterator(); iter.hasNext();) { UserDetails user = (UserDetails) iter.next(); userCache.putUserInCache(user); } List<Resource> rescs =authenticationService.getResources(); for (Iterator iter = rescs.iterator(); iter.hasNext();) { Resource resc = (Resource) iter.next(); resourceCache.putResourceInCache(resc); } //生成 acegiCacheManager this.acegiCacheManager = new AcegiCacheManager(userCache,resourceCache); } //-------------setters----------- public void setAcegiCacheManager(AcegiCacheManager acegiCacheManager) { this.acegiCacheManager = acegiCacheManager; } @Required public void setAuthenticationService(AuthenticationService authenticationService) { this.authenticationService = authenticationService; } @Required public void setUserCache(UserCache userCache) { this.userCache = userCache; } @Required public void setResourceCache(ResourceCache resourceCache) { this.resourceCache = resourceCache; } } 同时还定义了一个类为: [code=Java] /** * AcegiCacheManager是对缓存进行统一管理,以屏蔽其它类对缓存的直接操作 * 对缓存中的用户和资源进行初始化、增、删、改、清空等操作 * @author zhanghg * */ public class AcegiCacheManager { private UserCache userCache; private ResourceCache resourceCache; //rescTypeMapp 映射资源类型对应的资源的一对多关系,以便快速查找。 //如method类型对应哪些资源实例,url资源类型对应哪些资源实例 private Map<String,List<String>> rescTypeMapping; //-----constructor using fields @SuppressWarnings("unchecked") public AcegiCacheManager(UserCache userCache, ResourceCache resourceCache) { System.out.println("实例化SecurityManager"); this.userCache = userCache; this.resourceCache = resourceCache; // 获取所有的资源,以初始化 rescTypeMapping rescTypeMapping = new HashMap<String,List<String>>(); List<String> resclist = resourceCache.getAllResources(); for (Iterator iter = resclist.iterator(); iter.hasNext();) { String resString = (String) iter.next(); System.out.println("初始化SecurityCacheManager时取得资源信息的path:"+resString); ResourceDetails resc = resourceCache.getResourceFromCache(resString); System.out.println("输出该资源的type类型为:"+resc.getResourceType()); List<String> typelist = rescTypeMapping.get(resc.getResourceType()); if(typelist==null){ typelist = new ArrayList<String>(); rescTypeMapping.put(resc.getResourceType(), typelist); } typelist.add(resString); } System.out.println("输出最终的resTypeMapping信息:"+rescTypeMapping.size()); } //-----get from cache methods public UserDetails getUser(String username) { return userCache.getUserFromCache(username); } public ResourceDetails getResourceFromCache(String resString) { return resourceCache.getResourceFromCache(resString); } //-----remove from cache methods public void removeUser(String username){ userCache.removeUserFromCache(username); } public void removeResource(String resString){ ResourceDetails rd = resourceCache.getResourceFromCache(resString); List<String> typelist = rescTypeMapping.get(rd.getResourceType()); typelist.remove(resString); resourceCache.removeResourceFromCache(resString); } //------add to cache methods public void addUser(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, GrantedAuthority[] authorities){ User user = new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); addUser(user); } public void addUser(UserDetails user){ System.out.println("进来,添加user至缓存"); userCache.putUserInCache(user); } public void addResource(String resourceName,String resString, String resType, GrantedAuthority[] authorities){ Resource rd = new Resource(resourceName,resString, resType, authorities); addResource(rd); } public void addResource(ResourceDetails rd){ List<String> typelist = rescTypeMapping.get(rd.getResourceType()); if(typelist==null){ typelist = new ArrayList<String>(); rescTypeMapping.put(rd.getResourceType(), typelist); } typelist.add(rd.getPath()); resourceCache.putResourceInCache(rd); } // ------renovate cache methods public void renovateUser(String orgUsername, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, GrantedAuthority[] authorities){ removeUser(orgUsername); addUser(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); } public void renovateUser(String orgUsername, UserDetails user){ removeUser(orgUsername); addUser(user); } public void renovateResource(String resName,String orgResString,String resString, String resType, GrantedAuthority[] authorities ){ removeResource(orgResString); addResource(resName,resString, resType, authorities); } public void renovateResource(String orgResString,ResourceDetails rd){ removeResource(orgResString); addResource(rd); } //-------getters and setters------------------- public void clearResources() { rescTypeMapping = new HashMap<String,List<String>>(); resourceCache.removeAllResources(); } public void setResourceCache(ResourceCache resourceCache) { this.resourceCache = resourceCache; } public void setUserCache(UserCache userCache) { this.userCache = userCache; } /** * 根据资源类型,在rescTypeMapping职工获取所有该类型资源的对应的resource string * @param resType * @return List */ public List<String> getResourcesByType(String resType) { return rescTypeMapping.get(resType); } /** * 获取所有资源的对应的resource string * @return */ public List<String> getAllResources(){ return resourceCache.getAllResources(); } /** * 获取所有用户实例对应的user name * @return */ @SuppressWarnings("unchecked") public List<String> getAllUsers(){ EhCacheBasedUserCache ehUserCache = (EhCacheBasedUserCache)userCache; return ehUserCache.getCache().getKeys(); } } [/code] 同时我的一个类:StaffManager中要用到AcegiCacheManager类 public class StaffManager { // 统一定义所有HQL private static final String QUERY_ADMIN_HQL = "select staff from Staff staff join staff.roles as role where role.roleName=?"; private final Logger logger = LoggerFactory.getLogger(StaffManager.class); //自动装配该bean的属性 @Autowired private StaffDao staffDao; @Autowired private RoleDao roleDao; @Autowired private PrivilegeDao privilegeDao; @Autowired private ResourceDao resourceDao; private AcegiCacheManager acegiCacheManager; 通过@Reqiured进行了注解. 其中我在配置文件配置了bean: <beans:bean id="acegiCacheManager" class="com.sdcncsi.security.cache.manager.AcegiCacheManagerFactoryBean" > 但是为什么staffManager当中,取到的acegiCacheManager老是null呢? 当然通过上下文的getBean("acegiCacheManager")是可以取到这个类的,不是null [b]问题补充:[/b] 楼上的还还是不明白: 如果通过在xml文件中注册bean: <beans:bean id="acegiCacheManager" class="com.sdcncsi.security.cache.manager.AcegiCacheManagerFactoryBean" > 那么我应该在staffManager中怎样写才能取得不为null啊? 而如果我通过@Component("acegiCacheManager")进行注解, 我在staffManager中进行@Autowired,但是为什么提示: Could not autowire field: private com.sdcncsi.security.cache.manager.AcegiCacheManager,com.sdcncsi.service.sys.StaffManager注解错误? 我该 怎样做? 另外factory bean会在服务启动时自动的启动这个bean吗? 而AcegiCacheManager是在AcegiCacheManagerFactoryBean中使用的,但是如果在其它类中我们怎样来引用它,直接注入AcegiCacheManager吗?但是这个类没有默认构造方法,不能实例化. 我现在都晕了,搞的好头大,请各位大人帮忙啊. [b]问题补充:[/b] lovewhzlq说通过这样改定就可以: ------------------------------------------------------------- @Autowired private ResourceDao resourceDao; @Autowired private AcegiCacheManager acegiCacheManager; ----------------------------------------------------------- 我试了后不行: 1)我的配置文件中配置了: <beans:bean id="acegiCacheManager" class="com.sdcncsi.security.cache.manager.AcegiCacheManagerFactoryBean" > 它 是指向工厂类的,这样在启动的时候可以初始化信息. 后来,我把AcegiCacheManagerFactoryBean进行了@Component("acegiCacheManager") 并且在StaffManager中对 AcegiCacheManager acegiCacheManager 启用@Autowired, 提示:Could not autowire field: rror creating bean with name 'acegiCacheManager': FactoryBean which is currently in creation returned null from getObject 我该如何做才对啊?
Spring2.5事务管理没有运行起来,哪里错了咧?
基于泛型、反射,使用jdbcTemplate写了一个公共DAO,作为小例子前提测试一下业务层的事务,用的注解@Transactional DAO代码片断: [code="java"] public <T> boolean insertSingleData(final List<T> datas) throws Exception{ if (null == datas || datas.size()==0) return false; ... String sql = String.format("INSERT INTO %s %s VALUES %s", type.getSimpleName().toLowerCase(), fieldList.toString().replace('[', '(').replace(']', ')'), paramList.toString().replace('[', '(').replace(']', ')') ); BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() { public void setValues(PreparedStatement arg0, int arg1) throws SQLException { final T currentVo = datas.get(arg1); for(int v=0;v<targetFields.size();v++){ try { arg0.setObject(v+1, getBeanFieldValues(currentVo,targetFields.get(v).toLowerCase())); } catch (Exception e) { e.printStackTrace(); } } } public int getBatchSize() { return datas.size(); } }; int[] result = jdbcTemplate.batchUpdate(sql, setter); return (result.length == datas.size())?true:false; } [/code] 然后有一个业务层Services的方法片段 [code="java"] @Transactional(rollbackFor=Exception.class) public void TestTrans() throws Exception{ vo =xxx; pvo = xxxx; commonDbService.insertSingleData(vo); commonDbService.insertSingleData(pvo); } [/code] pvo我模拟插入一个超长字段值,引起了异常。预期结果应该是两个都要回滚,可是vo的值却插入到数据库中了,并没有回滚? 哪里有问题咧? [b]问题补充:[/b] To:lovewhzq 是基于注解的方式 <tx:annotation-driven transaction-manager="txManager" /> 想法是在业务层实现事务控制,DAO只是最小的数据处理单元,我在业务层做的事务定义 @Transactional(rollbackFor=Exception.class) public void TestTrans() throws Exception 至于Dao这一层,做不做以下配置 @Transactional(propagation=Propagation.REQUIRED) 都不起作用,一次insertSingleData还是一个事务,二个一起跑第二个错了第一个没有回滚... [b]问题补充:[/b] 感谢各位 ========= TO:sunlightcs DAO里面没有用@Trans...只在业务层使用了。 =========== To:lovewhzq: DAO只是做了一个反射,使用的jdbcTemplate,本身并没有使用与事务相关的东东 实在很郁闷... [b]问题补充:[/b] 贴出源代码,以更新举例吧 [quote] /** * 根据主键ID更新 */ public <T> int updateDataById(T vo) throws RuntimeException{ try{ final Class<?> type = vo.getClass(); String fieldName = ""; ArrayList<String> fieldList = new ArrayList<String>(); ArrayList<String> fieldNames = new ArrayList<String>(); for(Field field : type.getDeclaredFields()){ fieldName = field.getName(); //结果值不为null并且字段名称不以_结束,即虚字段 if (null!=getBeanFieldValues(vo,fieldName) && !fieldName.endsWith("_")){ fieldList.add(fieldName.concat("=?")); fieldNames.add(fieldName); } } String sql = String.format("UPDATE %s SET %s WHERE id=?", type.getSimpleName().toLowerCase(), fieldList.toString().replace('[', ' ').replace(']', ' ') ); showLog(sql); Object[] params = new Object[fieldNames.size()+1]; for(int m=0;m<fieldNames.size();m++){ params[m] = getBeanFieldValues(vo, fieldNames.get(m)); } params[params.length-1] = getBeanFieldValues(vo, "id"); return jt.update(sql, params); }catch (Exception e){ throw new RuntimeException(); } } [/quote] 业务层测试源代码 [code="java"] @Transactional public void TestTrans() throws RuntimeException{ Person vo=null; Products pvo = null; try{ vo = commonDbService.queryDataById(Person.class, null, null, "101",null); vo.setName("aaa"); pvo = commonDbService.queryDataById(Products.class, null, null, 1, null); pvo.setProductname("jackjackjackjackjackjackjackjackjackjackjackjackjackjackjackjackjackjack");//这里引发异常 commonDbService.updateDataById(vo); // 他居然提交了,没有回滚 commonDbService.updateDataById(pvo); }catch (Exception e){ throw new RuntimeException(){}; } } [/code] Spring配置 [code="java"] <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:annotation-driven transaction-manager="txManager" /> <bean id="mainbean" class="net.duoer.MainBean" autowire="byName" /> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="commonDbService" class="net.duoer.service.impl.MySQLCommonDBServiceImpl"> <property name="jt" ref="jdbcTemplate" /> <property name="isDebug" value="true"></property> </bean> [/code] 不晓得哪里出了问题...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
只因接了一个电话,程序员被骗 30 万!
今天想给大家说一个刚刚发生在我身边的一起真实的诈骗经历,我的朋友因此被骗走30万。注:为了保护当事人隐私,部分情节进行了修改。1平安夜突来的电话开始以为就像普通的诈骗一样,想办法让你把钱...
我一个37岁的程序员朋友
周末了,人一旦没有点事情干,心里就瞎想,而且跟几个老男人坐在一起,更容易瞎想,我自己现在也是 30 岁了,也是无时无刻在担心自己的职业生涯,担心丢掉工作没有收入,担心身体机能下降,担心突...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
立即提问