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

郑州市建设工程造价信息网站小企业怎么做网站

郑州市建设工程造价信息网站,小企业怎么做网站,珠海响应式网站制作,网站怎么做域名跳转实验目的 掌握MyBaits动态代理的使用log4j日志的使用Lombk的使用单元测试的使用SqlSessionFactory单例模式预处理语句的使用 实验内容 完成学生表的增删改查#xff0c;学生表信息如下 CREATE TABLE tb_student( sno INT AUTO_INCREMENT PRIMARY KEY, student_name VAR…实验目的 掌握MyBaits动态代理的使用log4j日志的使用Lombk的使用单元测试的使用SqlSessionFactory单例模式预处理语句的使用 实验内容 完成学生表的增删改查学生表信息如下 CREATE TABLE tb_student( sno INT AUTO_INCREMENT PRIMARY KEY, student_name VARCHAR(20) NULL, student_age INT NULL );实验步骤 log4j日志文件的配置与使用 在pom文件中添加下述坐标获取log4j依赖包 dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.16/version /dependency 在resources目录下添加配置文件log4j.properties其代码如下 # log4j的全局配置 log4j.rootLoggerERROR, stdout # MyBatis日志配置 log4j.logger.com.bjwlDEBUG # 控制台输出格式 log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%5p [%t] - %m%n 在mybaits的主配文件中添加日志的配置代码如下 settings ... !--配置SQL输出文件-- setting namelogImpl valueLOG4J / /settings Lombok的配置与使用 Lombok项目是一个java库它可以自动插入到编辑器和构建工具中增强java的性能。不需要再写getter、setter或equals方法只要有一个注解就有一个功能齐全的构建器、自动记录变量等。使用Maven坐标导入使用Lombok的依赖包坐标如下。 dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.24/version scopecompile/scope /dependency编写实体类时只需要在类上加Data注解符即可无需程序员编写getter和setter代码示例代码如下。 Data public class Student { private Integer sno; private String studentName; private Integer studentAge; } 单元测试junit的使用 使用单元测试工具junit在pom文件中增加以下maven坐标完成依赖包的导入后在类的方法上加注解夫test就可以进行运行测试。maven坐标如下所示 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependencydependencySqlSessionFactory单例模式 在myBatis框架的使用中每次执行持久化化访问操作时需要读入主配文件创建sqlSessionFactory实例可以将其中共用部分提取到一个公用类实现复用。由于SqlSessionFactory可以被多个线程共享避免资源浪费应该保证SqlSessionFactory的在一个系统中仅有一个实例其代码如下 public class BatisUtils { private static SqlSessionFactory sqlSessionFactory; private BatisUtils() {}; public static synchronized SqlSessionFactory getSqlSessionFactory() throws IOException { if (sqlSessionFactory null) { InputStream inputStream Resources.getResourceAsStream(mybatis-config.xml); sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); } return sqlSessionFactory; } }定义持久化接口StudentDao 代码如下 public interface StudentDao { ListStudentPOJO getAllStudent(); int addStudent(StudentPOJO student); int updateStudent(StudentPOJO student); int deleteStudent(Integer sno); } 不使用动态代理时需要开发人员编写持久化接口的实现类代码如下。 public class StudentDaoImpl implements StudentDao { private SqlSessionFactory factory; public StudentDaoImpl(SqlSessionFactory factory) { this.factory factory; } Override public ListStudent getAllStudent() { SqlSession sqlSession factory.openSession(); ListStudent students sqlSession.selectList(com.bjwl.dao.StudentDao.getAllStudent); return students; } Override public int addStudent(Student student) { SqlSession sqlSession factory.openSession(); Integer flag sqlSession.insert(com.bjwl.dao.StudentDao.addStudent,student); sqlSession.commit(); return flag; } Override public int updateStudent(Student student) { SqlSession sqlSession factory.openSession(); Integer flag sqlSession.update(com.bjwl.dao.StudentDao.updateStudent,student); sqlSession.commit(); return flag; } Override public int deleteStudent(Integer sno) { SqlSession sqlSession factory.openSession(); Integer flag sqlSession.delete(com.bjwl.dao.StudentDao.deleteStudent,sno); sqlSession.commit(); return flag; } } 需要注意的是增加、删除、修改必须使用 sqlSession.commit()提交修改信息才能将维护信息写入数据库中编写测试类代码如下。 //不使用动态代理模式 public class MyBatisTest0 { private StudentDao dao; public MyBatisTest0() throws IOException { SqlSessionFactory sqlSessionFactory BatisUtils.getSqlSessionFactory(); this.dao new StudentDaoImpl(sqlSessionFactory); } Test public void getAllStudentTest() { ListStudent students dao.getAllStudent(); for (int i 0; i students.size(); i) { System.out.println(students.get(i).toString()); } } Test public void addStudentTest() { Student student new Student(); student.setStudentName(陆雪琪); student.setStudentAge(19); dao.addStudent(student); } Test public void updateStudentTest() { Student student new Student(); student.setSno(3); student.setStudentName(黑山老妖); student.setStudentAge(299); dao.updateStudent(student); } Test public void deleteStudentTest() { dao.deleteStudent(8); } } 代码中方法上的Test 注解符就是使用junit提供的测试功能运行结果如下图所示。 图中显示的sql语句就是通过log4j在控制台显示的内容 9. 使用动态代理 不使用动态代理时开发人员必须编写每个持久化接口的实现类分析这些实现类中代码其执行过程非常相似如果这部分代码由计算机自动生成则可大大减轻开发人员的工作量动态代理方式就是由计算机生成持久化实现类的方式。添加一个测试类MyBatisTest在此类中直接使用动态代理方式示例代码如下。 public class MyBaitsTest { public void getAllStudentTest() throws Exception { SqlSession session getSqlSession(); System.out.println(StudentDao.class); StudentDao dao session.getMapper(StudentDao.class); System.out.println(dao.getClass()); ListStudent students dao.getAllStudent(); for (int i 0; i students.size(); i) { System.out.println(students.get(i).toString()); } session.close(); } private SqlSession getSqlSession() throws IOException { SqlSessionFactory sqlSessionFactory BatisUtils.getSqlSessionFactory(); SqlSession session sqlSessionFactory.openSession(); return session; } } 运行过如下 由运行图可以看到通过传入接口com.bjwl.dao.StudentDao生成的StudentDao 为代理对象无需开发人员编写接口的实现类。 使用动态代理是使用mybaits框架常用方式要求必须掌握
http://www.pierceye.com/news/214662/

相关文章:

  • 建设网站的语言中囯军事网
  • 网站开发职业访谈上海 建设工程质量监督站网站
  • 网站开发程序用什么好用新浪微博做网站
  • 什么免费推广网站好旅游订房网站开发需求文档
  • 网站运营是做啥的wordpress带会员中心主题
  • 网站设计怎么弄微信表情开放平台官网
  • 做网站纸张大小滨州网站建设模板建设
  • wordpress建站位置被跨境电商骗了怎么办
  • 巫山网站建设哇塞fm网站维护
  • 南宁百度网站推广计算机网站建设与推广
  • 汉中网站建设开发做微网站是订阅号还是服务号号
  • 中国商城网站建设h5响应式网站模板下载
  • 建设个商城网站需要多少钱网上商城系统平台官网
  • 软件开发与网站开发的区别最新源码
  • 电子商务网站建设策划中国网站建设公司排行
  • 网站的推广方式组合经验丰富的网站制作公司
  • 北京企业网站建设php制作公司网站首页
  • 保险网站建设网站 为何要 备案
  • 南宁网站设计可以找我wordpress 主题
  • 池州家居网站建设怎么样h5链接是什么意思
  • 网站添加站长统计代码凡科建站登录入口官方正版
  • 淮北做网站的公司有哪些手机网站设计只选亿企邦
  • 网站服务器打不开爱站工具网
  • php网站接口开发wordpress添加作者
  • 网站建设漂亮的模板创新网站建设工作
  • 国内做服装的网站有哪些方面wordpress邮件订阅
  • 建立个人网站主题安徽省建设厅网站打不开
  • 做互联网小程序 和网站有没有前景广州网站制作教程
  • 新网网站内部优化wordpress菜单图标
  • 深圳市龙华区住房和建设局网站网站开发连接数据库