食品饮料网站建设怎样做门窗网站

张小明 2026/1/3 5:04:16
食品饮料网站建设,怎样做门窗网站,做衬衣的网站,wordpress 获取category id2 示例12.1 创建2.1.1 创建项目新建Maven项目#xff0c;然后直接下一步。展开三角填写信息#xff0c;最后一行版本不填#xff0c;直接用默认的。然后完成。进度条走完后#xff0c;点文件#xff0c;设置#xff0c;展开编辑器#xff0c;在点文件和代码模板。然后先…2 示例12.1 创建2.1.1 创建项目新建Maven项目然后直接下一步。展开三角填写信息最后一行版本不填直接用默认的。然后完成。进度条走完后点文件设置展开编辑器在点文件和代码模板。然后先点加号在输入名称和扩展名再在下面黑框里输入以下代码。下面框全部勾选。?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespace /mapper步骤同上但是只勾选第一个框。上面的操作只是保存到模版里还需要在项目中创建。这个是主配置文件在resources目录下创建SqlMapConfig.xml的配置文件其实名称可以任意具体解释见11导入对应的约束编写主配置文件。?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration environments defaultmysql environment idmysql !--配置事务的类型使用本地事务策略-- transactionManager typeJDBC/transactionManager !--是否使用连接池 POOLED表示使用链接池UNPOOLED表示不使用连接池-- dataSource typePOOLED property namedriver valuecom.mysql.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/mybatis_demo/ property nameusername valueroot/ property namepassword value036520/ /dataSource /environment /environments !-- 加载映射的配置文件 -- mappers mapper resourcemapper/UserDao.xml/mapper /mappers /configuration2.1.2 创建数据库和表新建表CREATE TABLE user ( id int(11) NOT NULL auto_increment, username varchar(32) NOT NULL COMMENT 用户名称, birthday datetime default NULL COMMENT 生日, sex char(1) default NULL COMMENT 性别, address varchar(256) default NULL COMMENT 地址, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8; insert into user(id,username,birthday,sex,address) values (1,老王,2018-02-27 17:47:08,男,北京),(2,熊大,2018-03-02 15:09:37,女,上海),(3,熊二,2018-03-04 11:34:34,女,深圳),(4,光头强,2018-03-04 12:04:06,男,广州);2.1.3 修改包的显示方式。点显示选项菜单图表是设置的图标取消勾选平展软件包即可得到下图效果。2.1.4 创建包等2.1.4.1 entity包主要是与数据库表映射。对应关系实体类与数据库中的表存在一一对应关系实体类的属性对应表中的字段 。例如数据库中有一张 user 表包含 id、username、password 等字段那么在 entity 包下的 User 实体类就会有与之对应的属性如 private int id;、private String username;、private String password; 。通过 MyBatis 的映射配置可实现实体类与表之间的数据交互方便进行增删改查操作。数据持久化当执行数据库插入操作时将实体类对象的属性值对应插入到表的相应字段中查询操作则是将表中的记录数据映射填充到实体类对象的属性上 。比如执行 SELECT * FROM user WHERE id 1 语句后查询结果会被封装成 User 实体类对象返回。com.qcby.entity这个包中的每一个类都对应着数据库中的每一个表在数据库里面新建一个表就要在这个包里新建一个类。表中的所有字段列名都是这个类的成员变量但是不是所有成员变量都一定是表里面的字段。写完成员变量后生成对于的get、set方法和toString()方法。下面代码中pageSize和pageStart是后面分页查询用到的这里先不管。后面会解释。package com.lsl.entity; import java.util.Date; /** * 对应数据库中的User表 */ public class User { private Integer id; private String username; private Date birthday; private String sex; private String address; private String password; private Integer pageSize; private Integer pageStart; public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize pageSize; } public Integer getPageStart() { return pageStart; } public void setPageStart(Integer pageStart) { this.pageStart pageStart; } public User() { } public User(String username, Date birthday, String sex, String address) { this.username username; this.birthday birthday; this.sex sex; this.address address; } public String getSex() { return sex; } public void setSex(String sex) { this.sex sex; } public String getPassword() { return password; } public void setPassword(String password) { this.password password; } public String getAddress() { return address; } public void setAddress(String address) { this.address address; } public String getUsername() { return username; } public void setUsername(String username) { this.username username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday birthday; } public Integer getId() { return id; } public void setId(Integer id) { this.id id; } Override public String toString() { return User{ id id , username username \ , birthday birthday , sex sex \ , address address \ , password password \ }; } }2.1.4.2 dao包和mapper目录再新建com.qcby.dao包和mapper目录。dao层和mapper层的概念dao 层数据访问对象层Data Access Object在软件架构中dao 层主要负责与数据库进行交互执行数据的增删改查操作 。它屏蔽了具体的数据库操作细节为上层业务逻辑提供统一的数据访问接口。通过 dao 层业务层可以不用关心底层是 MySQL、Oracle 等哪种数据库以及具体的 SQL 语句如何编写和执行等细节。mapper在基于 MyBatis 框架的项目中mapper 通常是指存放 SQL 映射文件的目录。MyBatis 是一种将 SQL 语句从 Java 代码中分离出来的持久层框架mapper 目录下的 XML 文件或使用注解方式定义了具体的 SQL 语句比如 SELECT、INSERT、UPDATE、DELETE 等操作并且将这些 SQL 语句与 dao 层的接口方法进行映射关联。具体操作解释创建目录和文件在项目中创建 mapper 目录在资源目录resources下新建一个名为 mapper 的目录后续所有与 SQL 相关的 XML 文件都将存放在这个目录下 。比如要对用户表进行操作就可以在这个目录下创建一个 UserMapper.xml 文件具体操作见下面在其中编写针对用户表的 SQL 语句像查询用户列表的 SELECT * FROM user 语句等。在mapper目录下创建UserMapper.xml文件在 dao 层创建接口在 dao 包这里是 com.qcby.dao下新建一个 UserDao 接口 。这个接口定义了一系列对用户数据操作的抽象方法比如 List selectAllUsers()查询所有用户 、User selectUserById(int id)根据用户 ID 查询用户等。它并不包含具体的实现逻辑具体的实现逻辑是通过与 mapper 目录下的 XML 文件进行映射由 MyBatis 框架来动态生成实现类并执行 SQL 语句。在dao包下创建UserDao接口创建 sqlMapConfig.xml 文件在 resources 目录下创建一个SqlMapConfig名为 SqlMapConfig.xml 的文件它是 MyBatis 的全局配置文件 。在这个文件中可以配置 MyBatis 的一些全局属性如数据库连接信息数据源配置、事务管理方式、类型别名、mapper 映射文件的位置等。例如通过配置 来告诉 MyBatis 到 mapper 目录下加载 UserMapper.xml 这个映射文件。创建完后修改代码(26行修改成如下内容。19行代码的mybatis_demo是数据库名称。?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration settings !--设置mybatis输出日志-- !--logImpl表示对日志的控制-- !--STDOUT_LOGGING:将日志输出到控制台上-- setting namelogImpl valueSTDOUT_LOGGING/ /settings environments defaultmysql environment idmysql !--配置事务的类型使用本地事务策略-- transactionManager typeJDBC/transactionManager !--是否使用连接池 POOLED表示使用链接池UNPOOLED表示不使用连接池-- dataSource typePOOLED property namedriver valuecom.mysql.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/mybatis_demo/ property nameusername valueroot/ property namepassword value036520/ /dataSource /environment /environments mappers mapper resourcemapper/UserMapper.xml/mapper /mappers /configuration2.1.5 在pom.xml中导入相关依赖引入MyBatis的3.4.5的版本的坐标引入MySQL驱动的jar包5.1.6版本引入Junit单元测试的jar引入log4j的jar包1.2.12版本需要引入log4j.properties的配置文件该配置文件的具体解释见框架集成 ssm 4.2添加后的代码如下。?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.lsl/groupId artifactIdMyBatisDemoTest/artifactId version1.0-SNAPSHOT/version properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target /properties dependencies !--mybatis核心包-- dependency groupIdorg.mybatis/groupId artifactIdmybatis/artifactId version3.4.5/version /dependency !--mysql驱动包-- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency !-- 单元测试 -- dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.10/version /dependency !-- 日志 -- dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.17/version /dependency /dependencies /project随后点右上角的m标志。如果没有就点最右边的Maven然后再点红框。进度条走完就可以继续写代码了。如果此时SqlMapConfig.xml第四行代码报错。如下图。只用把这个文件删了重新再建一个即可。2.2 代码2.2.1 UserMapper.xml2.2.1.1 初始配置在UserMapper.xml中的第四行代码的namespace加上com.lsl.dao.UserDao。目的是把UserMapper.xml映射到UserDao中具体解释如下。文件命名及对应关系UserMapper.xml 这个文件命名中的 User 与 UserDao 接口以及业务中的 User 实体类相对应 。在 UserMapper.xml 文件中通过 这个叫做名称空间来指定该映射文件与 UserDao 接口关联然后在文件中定义的 SQL 语句就会与 UserDao 接口中的方法进行对应当在业务层调用 UserDao 接口的方法时MyBatis 框架会根据这种映射关系找到对应的 SQL 语句并执行。?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.lsl.dao.UserDao /mapper2.2.1.2 第一个查询语句SQL 语句定义与标签使用使用标签定义查询语句id属性需与接口方法名完全一致如findAll。resultType指定返回值类型com.lsl.entity.UserMyBatis 自动将查询结果映射为实体对象或集合。示例 SQLselect * from user查询所有用户数据返回List集合。?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.lsl.dao.UserDao !-- id:方法名称 -- !-- resultType:数据返回的类型 -- select idfindAll resultTypecom.lsl.entity.User select * from user; /select /mapper2.2.2 UserDao.java接口方法与映射文件的对应关系接口方法名需与映射文件中 SQL 标签的id一致如findAll()对应。返回值类型需与resultType匹配List对应查询多条数据User对应单条数据。接口方法默认使用public abstract修饰可省略符合 Java 接口规范。package com.lsl.dao; import com.lsl.entity.User; import org.apache.ibatis.annotations.Param; import java.util.List; public interface UserDao { public abstract ListUser findAll(); }2.2.3 UserTest.java在test下的java包中新建一个UserTest的类。测试方法Test执行流程调用接口方法如userDao.findAll()MyBatis 自动匹配映射文件中的 SQL 并执行。处理返回结果通过for-each循环遍历List打印实体对象信息。import com.lsl.dao.UserDao; import com.lsl.entity.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.Date; import java.util.List; public class UserTest { private InputStream in null; private SqlSession session null; private UserDao userDao null; Before //前置通知, 在方法执行之前执行 public void init() throws IOException { //加载主配置文件目的是为了构建SqlSessionFactory对象 in Resources.getResourceAsStream(SqlMapConfig.xml); //创建SqlSessionFactory对象 SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in); //通过SqlSessionFactory工厂对象创建SqlSesssion对象 session factory.openSession(); //通过Session创建UserDao接口代理对象 userDao session.getMapper(UserDao.class); } After //After: 后置通知, 在方法执行之后执行 。 public void destory() throws IOException { //释放资源 if (session ! null) { // 增加null检查 session.close(); } in.close(); } Test public void aaa(){ ListUser users userDao.findAll(); for (User user: users ) { System.out.println(user.toString()); } }2.2.4 test方法的写法对于test方法的写法一共有三种。基于 Spring 注解的 AOP 方式第一种就是2.2.3的这种写法。核心是通过 Spring 的 Before前置通知和 After后置通知注解在测试方法执行前后自动处理资源的初始化如创建 SqlSession和释放如关闭连接简化重复的资源管理代码。接口代理方式通过 SqlSession.getMapper(接口类) 获取 DAO 接口的代理对象直接调用接口中定义的方法如 mapper.findAll()执行 SQL。这是 MyBatis 官方推荐的方式体现了面向接口编程的思想代码更简洁且类型安全。/** * 测试查询所有的方法 * throws Exception */ Test public void testFindAll() throws Exception { // 加载主配置文件目的是构建SqlSessionFactory的对象 InputStream in Resources.getResourceAsStream(SqlMapConfig.xml); // 创建SqlSessionFactory对象 SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in); // 使用SqlSessionFactory工厂对象创建SqlSession对象 SqlSession session factory.openSession(); // 通过session创建UserMapper接口的代理对象 UserDao mapper session.getMapper(UserDao.class); // 调用查询所有的方法 ListUser list mapper.findAll(); // 遍历集合 for (User user : list) { System.out.println(user); } // 释放资源 session.close(); in.close(); }字符串标识方式命名空间 方法名通过 SqlSession.selectList(命名空间.方法名) 直接执行 SQL其中字符串参数由映射文件中的命名空间如 com.qcby.dao.UserDao和 SQL 标签的 id如 findAll组合而成。这种方式需要手动维护字符串标识可读性和可维护性较弱较少推荐使用。Test public void run2() throws Exception { // 加载配置文件 InputStream inputStream Resources.getResourceAsStream(SqlMapConfig.xml); // 构建SqlSessionFactory对象 SqlSessionFactory factory new SqlSessionFactoryBuilder().build(inputStream); // 获取到session对象 SqlSession session factory.openSession(); // 查询所有的数据 ListUser list session.selectList(com.qcby.dao.UserDao.findAll); // 变量集合 for (User user : list) { System.out.println(user); } // 关闭资源 session.close(); inputStream.close(); }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

本溪化工建设质量监督站网站做网站包括图片设计吗

GraphQL:从数据查询到应用架构的范式演进 引言:超越REST的数据交互革命 在传统API设计领域,REST架构风格曾长期占据主导地位。然而,随着前端应用复杂度的指数级增长,REST接口的局限性日益凸显:过度获取&…

张小明 2026/1/2 16:47:31 网站建设

吉林网站网站建设优秀国外网站设计赏析

AI语音助手升级方案:集成EmotiVoice实现情感化交互 在智能设备无处不在的今天,用户早已不再满足于“能听懂指令”的语音助手。他们期待的是一个会笑、会安慰、有脾气也有温度的“伙伴”。可现实是,大多数语音系统仍停留在机械朗读阶段——语调…

张小明 2025/12/29 19:36:06 网站建设

药品招采网站建设费用建站网站公司调查

想象一下,当你驾驶着潜水器穿梭在神秘的海底洞穴时,身旁有队友为你导航;当你建造宏伟的水下基地时,有伙伴与你共同规划蓝图。这正是Subnautica Nitrox为《深海迷航》带来的革命性改变——将孤独的生存挑战转变为精彩的团队冒险。 …

张小明 2025/12/30 7:02:00 网站建设

成都工程网站建设我要推广

准备好迎接企业级应用开发的极速体验了吗?JeecgBoot作为一款功能强大的低代码开发平台,让您能够在短时间内构建出专业级的企业应用系统。无论您是初学者还是资深开发者,这份指南都将带您轻松掌握平台核心功能。 【免费下载链接】jeecg-boot …

张小明 2025/12/27 23:04:05 网站建设

网站seo诊断报告例子推广学校网站怎么做

从零开始搭建ESP32开发环境:Arduino IDE完整配置实战指南 你是不是也遇到过这样的情况?买了一块ESP32开发板,插上电脑却发现设备管理器里根本没有COM口;或者好不容易装好了Arduino IDE,一打开“开发板管理器”就卡在99…

张小明 2026/1/2 3:55:10 网站建设

建设婚恋网站用什么搭建苏州新闻

Langchain-Chatchat 0.3.1 Windows 部署实战指南 在企业知识管理日益智能化的今天,如何让内部文档“活起来”,成为员工随问随答的智能助手?一个安全、可控、本地化运行的知识库问答系统显得尤为关键。而 Langchain-Chatchat 正是这一需求下的…

张小明 2026/1/2 14:43:48 网站建设