当前位置: 首页 > news >正文

珠宝网站建设要以商为本大良网站建设dwxw

珠宝网站建设要以商为本,大良网站建设dwxw,网页设计的风格可分为两大类,网站建设背景 前景分析查询为null问题 要解决的问题#xff1a;属性名和字段名不一致 环境#xff1a;新建一个项目#xff0c;将之前的项目拷贝过来 1、查看数据库的字段名 2、Java中的实体类设计 public class User { private int id; //id private String name; //姓名 private String passwo…查询为null问题 要解决的问题属性名和字段名不一致 环境新建一个项目将之前的项目拷贝过来 1、查看数据库的字段名 2、Java中的实体类设计 public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样数据库中字段名为pwd //构造 //set/get //toString() }3、接口 //根据id查询用户 User selectUserById(int id);4、mapper映射文件 select * from user where id #{id} 5、测试 Test public void testSelectUserById() { SqlSession session MybatisUtils.getSession(); //获取SqlSession连接 UserMapper mapper session.getMapper(UserMapper.class); User user mapper.selectUserById(1); System.out.println(user); session.close(); }结果: User{id1, name‘狂神’, password‘null’} 查询出来发现 password 为空 . 说明出现了问题 分析 select * from user where id #{id} 可以看做 select id,name,pwd from user where id #{id} mybatis会根据这些查询的列名(会将列名转化为小写,数据库不区分大小写) , 去对应的实体类中查找相应列名的set方法设 值 , 由于找不到setPwd() , 所以password返回null ; 【自动映射】 解决方案 方案一为列名指定别名 , 别名和java实体类的属性名一致 . select idselectUserById resultTypeUser select id , name , pwd as password from user where id #{id} /select方案二使用结果集映射-ResultMap 【推荐】 resultMap idUserMap typeUser !-- id为主键 -- id columnid propertyid/ !-- column是数据库表的列名 , property是对应实体类的属性名 -- result columnname propertyname/ result columnpwd propertypassword/ /resultMap select idselectUserById resultMapUserMap select id , name , pwd from user where id #{id} /selectResultMap—自动映射 ResultMap 的设计思想是对于简单的语句根本不需要配置显式的结果映射而对于复杂一点的语句只需要描述它们的关 系就行了。 你已经见过简单映射语句的示例了但并没有显式指定 resultMap。比如 select idselectUserById resultTypemap select id , name , pwd from user where id #{id} /select上述语句只是简单地将所有的列映射到 HashMap 的键上这由 resultType 属性指定。虽然在大部分情况下都够用但 是 HashMap 不是一个很好的模型。你的程序更可能会使用 JavaBean 或 POJOPlain Old Java Objects普通老式 Java 对象作为模型。 ResultMap 最优秀的地方在于虽然你已经对它相当了解了但是根本就不需要显式地用到他们。 手动映射 1、返回值类型为resultMap select id , name , pwd from user where id #{id} 2、编写resultMap实现手动映射 resultMap idUserMap typeUser !-- id为主键 -- id columnid propertyid/ !-- column是数据库表的列名 , property是对应实体类的属性名 -- result columnname propertyname/ result columnpwd propertypassword/ /resultMap之后会使用到一些高级的结果集映射associationcollection这些 日志工厂 思考我们在测试SQL的时候要是能够在控制台输出 SQL 的话是不是就能够有更快的排错效率 如果一个 数据库相关的操作出现了问题我们可以根据输出的SQL语句快速排查问题。 对于以往的开发过程我们会经常使用到debug模式来调节跟踪我们的代码执行过程。但是现在使用Mybatis是基于接口配置文件的源代码执行过程。因此我们必须选择日志工具来作为我们开发调节程序的工具。 Mybatis内置的日志工厂提供日志功能具体的日志实现有以下几种工具 SLF4JApache Commons LoggingLog4j 2Log4jJDK logging 具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的按上文列举的顺序查找。如果一个都未找到日志功能就会被禁用。 标准日志实现 指定 MyBatis 应该使用哪个日志记录实现。如果此设置不存在则会自动发现日志记录实现。 settings setting namelogImpl valueSTDOUT_LOGGING/ /settings注意名字一定不要写错注意不要加无关的空格 测试可以看到控制台有大量的输出我们可以通过这些输出来判断程序到底哪里出了Bug 使用Log4j 1、导入log4j的包 dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.17/version /dependency2、配置文件编写 #将等级为DEBUG的日志信息输出到console和file这两个目的地console和file的定义在下面的代码 log4j.rootLoggerDEBUG,console,file #控制台输出的相关设置 log4j.appender.console org.apache.log4j.ConsoleAppender log4j.appender.console.Target System.out log4j.appender.console.ThresholdDEBUG log4j.appender.console.layout org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern[%c]-%m%n #文件输出的相关设置 log4j.appender.file org.apache.log4j.RollingFileAppender log4j.appender.file.File./log/kuang.log log4j.appender.file.MaxFileSize10mb log4j.appender.file.ThresholdDEBUG log4j.appender.file.layoutorg.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern[%p][%d{yy-MM-dd}][%c]%m%n #日志输出级别 log4j.logger.org.mybatisDEBUG log4j.logger.java.sqlDEBUG log4j.logger.java.sql.StatementDEBUG log4j.logger.java.sql.ResultSetDEBUG log4j.logger.java.sql.PreparedStatementDEBUG3、setting设置日志实现 settings setting namelogImpl valueLOG4J/ /settings4、在程序中使用Log4j进行输出 //注意导包org.apache.log4j.Logger static Logger logger Logger.getLogger(MyTest.class); Test public void selectUser() { logger.info(info进入selectUser方法); logger.debug(debug进入selectUser方法); logger.error(error: 进入selectUser方法); SqlSession session MybatisUtils.getSession(); UserMapper mapper session.getMapper(UserMapper.class); ListUser users mapper.selectUser(); for (User user: users){ System.out.println(user); } session.close(); }5、测试看控制台输出 limit实现分页 原因查询大量数据的时候我们往往使用分页进行查询也就是每次处理小部分数据这样对数据库压力就在可控范围内。 使用Limit实现分页 #语法 SELECT * FROM table LIMIT stratIndexpageSize SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 #为了检索从某一个偏移量到记录集的结束所有的记录行可以指定第二个参数为 -1 SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. #如果只给定一个参数它表示返回最大的记录行数目 SELECT * FROM table LIMIT 5; //检索前 5 个记录行 #换句话说LIMIT n 等价于 LIMIT 0,n。步骤 1、修改Mapper文件 select idselectUser parameterTypemap resultTypeuser select * from user limit #{startIndex},#{pageSize} /select2、Mapper接口参数为map //选择全部用户实现分页 List selectUser(MapString,Integer map); 3、在测试类中传入参数测试 起始位置 当前页面 - 1 * 页面大小 //分页查询 , 两个参数startIndex , pageSize Test public void testSelectUser() { SqlSession session MybatisUtils.getSession(); UserMapper mapper session.getMapper(UserMapper.class); int currentPage 1; //第几页 int pageSize 2; //每页显示几个 MapString,Integer map new HashMapString,Integer(); map.put(startIndex,(currentPage-1)*pageSize); map.put(pageSize,pageSize); ListUser users mapper.selectUser(map); for (User user: users){ System.out.println(user); } session.close(); }RowBounds分页 我们除了使用Limit在SQL层面实现分页也可以使用RowBounds在Java代码层面实现分页当然此种方式作为了解即 可。 步骤 1、mapper接口 //选择全部用户RowBounds实现分页 List getUserByRowBounds(); 2、mapper文件 select idgetUserByRowBounds resultTypeuser select * from user /select3、测试类 在这里我们需要使用RowBounds类 Test public void testUserByRowBounds() { SqlSession session MybatisUtils.getSession(); int currentPage 2; //第几页 int pageSize 2; //每页显示几个 RowBounds rowBounds new RowBounds((currentPage-1)*pageSize,pageSize); //通过session.**方法进行传递rowBounds[此种方式现在已经不推荐使用了] ListUser users session.selectList(com.kuang.mapper.UserMapper.getUserByRowBounds, null, rowBounds); for (User user: users){ System.out.println(user); } session.close(); }PageHelper
http://www.tj-hxxt.cn/news/217367.html

相关文章:

  • 如何做图片网站南海佛山网站建设
  • 陕西 餐饮 网站建设长治百姓网免费发布信息网
  • dw做网站小技巧做同城服务网站比较成功的网站
  • 哪个做网站平台好南沙免费网站建设
  • 汕头网站制作公司价格网上购物商城网站建设
  • 在线做春节网站怎样提高网站首页权重
  • 百度 特定网站搜索nginx 搭建wordpress
  • 网站300m是什么意思广州外贸公司排名前十
  • 网站小边框元素使用wordpress制作海报
  • 永州网站建设收费情况中文网站建设中模板
  • 网站里的聊天怎么做哈尔滨关键词优化效果
  • 怎么在网站中添加百度商桥wordpress首页文章带图
  • 山东系统建站怎么用中能建设集团电子商务网站
  • 制作网站需要钱吗网站怎么做下拉刷新
  • 公司网站建设浩森宇特三水网站建设首选公司
  • 配资网站建设是什么上海做网站的费用
  • 东莞营销网站建设服务韩国设计公司网站
  • 在线购物网站开发项目微网站建设套餐
  • 长沙本土网站制作公司群晖 wordpress 外网
  • 从0到建网站网站排名是怎么做
  • 可以做pos机的网站平台维护工作内容
  • 专业网站建设多少钱百度竞价推广收费标准
  • 山东省建设资格注册中心网站拼多多网站建设合同
  • 网络服务遇到问题请稍后再试吧网络营销中的seo是指
  • 海市科技网站建设上海找工作网站
  • 网站信息化建设网站制作湖州
  • 网页设计与网站建设课程设计报告新公司注册在哪个网站
  • 网站设计制作的服务和质量嵌入式培训学校
  • 威海专业做网站设计的公司查看网站的目录文件夹权限设置
  • 响应式商场网站长春火车站电话人工服务