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

海口专业做网站公司哪家好母婴推广网站

海口专业做网站公司哪家好,母婴推广网站,重庆市建设工程信息网站,哪个网站做的简历比较好一、概述 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary J…

一、概述

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

二、环境搭建

1、开发环境

  •         IDE:idea 2023.2.1
  •         构建工具:maven 3.9.2
  •         MySQL版本:MySQL 57
  •         MyBatis版本:MyBatis 3.0.4
  •         Spring boot:3.4.3

2、依赖

     在pom.xml中引入依赖

 <dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.4</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.4</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

3、创建MyBatis的核心配置文件

       因为在数据库中的表的字段,我们是使⽤下划线⻛格,⽽数据库实体的字段使⽤驼峰⻛格,所以通过 mapUnderscoreToCamelCase = true 来⾃动转换。习惯上命名为mybatis-config.xml,此配置文件存放的位置是src/main/resources目录下。

<?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><settings><!-- 使用驼峰命名法转换字段。 --><setting name="mapUnderscoreToCamelCase" value="true"/></settings><typeAliases><typeAlias alias="Integer" type="java.lang.Integer"/><typeAlias alias="Long" type="java.lang.Long"/><typeAlias alias="HashMap" type="java.util.HashMap"/><typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/><typeAlias alias="ArrayList" type="java.util.ArrayList"/><typeAlias alias="LinkedList" type="java.util.LinkedList"/></typeAliases></configuration>

4、编写应用配置文件

存放的位置是src/main/resources目录下,创建 application.properties(application.yaml) 配置⽂件。配置如下:

# ?????数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/实际你所用的数据库架构名称?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root  更改为你自己的用户名和密码
spring.datasource.password=root# MyBatis ??
mybatis.config-location=classpath:mybatis-config.xml 配置mybatis配置文件路径
mybatis.mapper-locations=classpath:mapper/*.xml   配置Mapper XML地址
mybatis.type-aliases-package=com.example.mybatis.dataobject   配置数据库实体类路径logging.level.com.example.mybatis.mapper=DEBUG

5、数据库设计和编写实体类

1、数据库设计

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',`username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号',`password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',`create_time` datetime DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`),UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

2、对应的用户实体类UserDO,用于表示用户的数据对象,并提供了相应的getter和setter方法以便于操作这些属性。

public class UserDO {/*** 用户编号*/private Integer id;/*** 账号*/private String username;/*** 密码(明文)** ps:生产环境下,千万不要明文噢*/private String password;/*** 创建时间*/private Date createTime;public Integer getId() {return id;}public UserDO setId(Integer id) {this.id = id;return this;}public String getUsername() {return username;}public UserDO setUsername(String username) {this.username = username;return this;}public String getPassword() {return password;}public UserDO setPassword(String password) {this.password = password;return this;}public Date getCreateTime() {return createTime;}public UserDO setCreateTime(Date createTime) {this.createTime = createTime;return this;}

6、编写UserMapper

1、UserMapper.java接口类放在src/mian/mapper包下,主要用于对用户数据执行数据库操作。它位于com.example.mybatis.mapper包下,并通过MyBatis框架与数据库进行交互。以下是该接口的主要功能:

  • insert(UserDO user): 插入一个新的用户记录到数据库中。
  • updateById(UserDO user): 根据提供的用户对象更新数据库中对应ID的用户信息。
  • deleteById(@Param("id") Integer id): 根据提供的用户ID从数据库中删除对应的用户记录。
  • selectById(@Param("id") Integer id): 根据用户ID查询并返回对应的用户信息。
  • selectByUsername(@Param("username") String username): 根据用户名查询并返回对应的用户信息。
  • selectByIds(@Param("ids") Collection<Integer> ids): 根据一组用户ID查询并返回对应的多个用户信息列表。

使用@Mapper注解标记这是一个MyBatis的Mapper接口,意味着MyBatis会为这个接口生成实现类来处理相应的数据库操作。而@Repository注解则表明该接口属于持久层组件,用于数据库相关操作,同时Spring框架可以对其进行管理。这使得在Service层可以通过依赖注入的方式直接使用UserMapper接口中的方法,方便地进行用户数据的增删改查操作。

package com.example.mybatis.mapper;import com.example.mybatis.dataobject.UserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;import java.util.Collection;
import java.util.List;@Mapper
@Repository
public interface UserMapper {int insert(UserDO user);int updateById(UserDO user);int deleteById(@Param("id") Integer id);UserDO selectById(@Param("id") Integer id);UserDO selectByUsername(@Param("username") String username);List<UserDO> selectByIds(@Param("ids") Collection<Integer> ids);}

2、UserMapper.xml配置文件放在 resources/mapper 路径下,用于定义与数据库交互的具体SQL语句。其主要作用如下:

  • 定义SQL片段:通过<sql id="FIELDS">定义了一个可复用的SQL片段,包含了用户表中的字段(id, username, password, create_time),可以在多个查询语句中引用。

  • 插入操作<insert>标签定义了如何向数据库的users表中插入一条新的用户记录,并使用了useGeneratedKeyskeyProperty属性来获取插入后自动生成的主键值。

  • 更新操作<update>标签根据提供的用户ID更新用户的用户名或密码(如果它们不为空)。这里使用了动态SQL(<if>标签)来判断哪些字段需要更新。

  • 删除操作<delete>标签根据提供的用户ID从数据库中删除对应的用户记录。

  • 按ID查询<select id="selectById">根据用户ID查询并返回对应的用户信息。通过<include refid="FIELDS" />引用之前定义的SQL片段简化了查询字段的书写。

  • 按用户名查询<select id="selectByUsername">根据用户名查询并返回对应的用户信息。为了确保只返回一个结果,使用了LIMIT 1限制查询结果数量。

  • 批量查询<select id="selectByIds">根据一组用户ID查询并返回对应的用户信息列表。使用了<foreach>标签遍历传入的ID集合,构造出WHERE id IN (...)形式的SQL查询条件。

此映射文件实现了对用户数据的基本CRUD操作,并通过MyBatis的动态SQL功能提高了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="com.example.mybatis.mapper.UserMapper"><sql id="FIELDS">id, username, password, create_time</sql><insert id="insert" parameterType="com.example.mybatis.dataobject.UserDO" useGeneratedKeys="true" keyProperty="id">INSERT INTO users (username, password, create_time) VALUES (#{username}, #{password}, #{createTime})</insert><update id="updateById" parameterType="com.example.mybatis.dataobject.UserDO">UPDATE users<set><if test="username != null">username = #{username},</if><if test="password != null">password = #{password},</if></set>WHERE id = #{id}</update><delete id="deleteById" parameterType="java.lang.Integer">DELETE FROM usersWHERE id = #{id}</delete><select id="selectById" parameterType="java.lang.Integer" resultType="com.example.mybatis.dataobject.UserDO">SELECT<include refid="FIELDS" />FROM usersWHERE id = #{id}</select><select id="selectByUsername" parameterType="java.lang.String" resultType="com.example.mybatis.dataobject.UserDO">SELECT<include refid="FIELDS" />FROM usersWHERE username = #{username}LIMIT 1</select><select id="selectByIds" parameterType="java.util.Collection" resultType="com.example.mybatis.dataobject.UserDO">SELECT<include refid="FIELDS" />FROM usersWHERE id IN<foreach item="id" collection="ids" separator="," open="(" close=")">#{id}</foreach></select></mapper>

7、测试类编写

在src/test/java/下编写测试类Tests代码,使用了JUnit和MyBatis框架来对UserMapper接口进行单元测试。其主要作用是验证用户数据操作(增删改查)的正确性。

  • 依赖注入:通过@Autowired注解自动装配了UserMapper实例,以便在测试中调用其方法。

  • 测试更新操作testUpdateById()方法创建了一个UserDO对象,并设置了ID和新密码,然后调用了userMapper.updateById()方法更新数据库中的用户信息,并记录更新的行数。

  • 测试插入操作testInsert()方法创建一个新的UserDO对象,设置了用户名、密码和创建时间,然后调用了userMapper.insert()方法将新用户插入到数据库中,并记录插入的行数。

  • 测试删除操作testDeleteById()方法调用了userMapper.deleteById()方法根据提供的用户ID从数据库中删除对应的用户记录,并记录删除的行数。

  • 测试按ID查询testSelectById()方法调用了userMapper.selectById()方法根据用户ID查询并返回对应的用户信息,并通过日志输出查询结果。

  • 测试按用户名查询testSelectByUsername()方法调用了userMapper.selectByUsername()方法根据用户名查询并返回对应的用户信息,并通过日志输出查询结果。

  • 测试批量查询testSelectByIds()方法调用了userMapper.selectByIds()方法根据一组用户ID查询并返回对应的多个用户信息列表,并通过日志输出查询结果的数量以及每个用户的详细信息。

这些测试方法确保了UserMapper接口中的各个方法能够正确地与数据库交互,实现了对用户数据的全面测试。

package com.example.mybatis;import com.example.mybatis.dataobject.UserDO;
import com.example.mybatis.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.*;@RunWith(SpringRunner.class)
@SpringBootTest(classes = MybatisApplication.class)
public class MybatisApplicationTests {private static final Logger logger = LoggerFactory.getLogger(MybatisApplicationTests.class);@Autowiredprivate UserMapper userMapper;@Testpublic void testUpdateById() {UserDO updateUser = new UserDO().setId(18).setPassword("wobucai");int result = userMapper.updateById(updateUser);logger.info("Updated {} rows", result);}@Testpublic void testInsert() {UserDO user = new UserDO().setUsername(UUID.randomUUID().toString()).setPassword("nicnnnnn").setCreateTime(new Date());int result = userMapper.insert(user);logger.info("Inserted {} rows", result);}@Testpublic void testDeleteById() {int result = userMapper.deleteById(18);logger.info("Deleted {} rows", result);}@Testpublic void testSelectById() {UserDO user = userMapper.selectById(1);logger.info("Selected user: {}", user);}@Testpublic void testSelectByUsername() {UserDO user = userMapper.selectByUsername("yunai");logger.info("Selected user by username: {}", user);}@Testpublic void testSelectByIds() {List<UserDO> users = userMapper.selectByIds(Arrays.asList(1, 3));logger.info("Selected users: {}", users.size());users.forEach(user -> logger.info("User: {}", user));}
}

三、简单测试

运行Tests测试类,可以看到数据库中运行前后对比

也可在tests 单独测试,这里以删除为例

自己继续尝试吧!

 


文章转载自:

http://SXJGHpB4.mnjwj.cn
http://Dd6v9Gnc.mnjwj.cn
http://8yoTxHEd.mnjwj.cn
http://6XPnhblM.mnjwj.cn
http://KepWxVg6.mnjwj.cn
http://BrSIlU0h.mnjwj.cn
http://N3SNCrVk.mnjwj.cn
http://74AGeQe0.mnjwj.cn
http://xnJP0gMT.mnjwj.cn
http://Y9JDCiL7.mnjwj.cn
http://T2ReDysa.mnjwj.cn
http://sJ6wR5TO.mnjwj.cn
http://418Oe45j.mnjwj.cn
http://tsLYDBIY.mnjwj.cn
http://4Y2GMfWx.mnjwj.cn
http://NmoOGWS3.mnjwj.cn
http://P6bag2AN.mnjwj.cn
http://n9oWqPSi.mnjwj.cn
http://wkSnf9gU.mnjwj.cn
http://wEx2aNP9.mnjwj.cn
http://cC34RKFo.mnjwj.cn
http://kP0uHCsi.mnjwj.cn
http://CaRJrd0m.mnjwj.cn
http://gz7PhnUZ.mnjwj.cn
http://dhM7SNwH.mnjwj.cn
http://q5FzBkpZ.mnjwj.cn
http://J6n5xpwS.mnjwj.cn
http://PPROYJc2.mnjwj.cn
http://vPyq9KhB.mnjwj.cn
http://FIHnkOHA.mnjwj.cn
http://www.dtcms.com/wzjs/633773.html

相关文章:

  • 公司的网站建设注意点做网站的赢点公司
  • 那里建设网站免费的素材库视频无水印
  • 龙华民治网站设计公司朋友圈推广平台
  • 公司网站链接怎么弄网站设计与管理方向
  • 手机网站改版自己做的网址如何推广
  • php做的网站怎么入侵wordpress链接默认是什么样子
  • 长沙企业建站程序科技网站首页欣赏
  • 湛江专业的建站托管做一个什么样的网站
  • 网站建设 的类型有哪些dw怎么做网站教程
  • 制作微信网站模板wordpress建企业网站教程
  • 中企动力做的网站后台如何登陆域名备案时网站名称
  • 购物网站开发介绍wordpress美化下载页面
  • 网站建设流程周期wordpress中文破解主题下载
  • 网站建设的收获体会html5手机网站发布
  • 温州网站建设价格技术wordpress 底部悬浮
  • 做公司网站 烟台wordpress 简历主题
  • 做服务的网站吗可以进入任何网站的浏览器
  • 给别人做网站用什么蓝杉互动网站建设
  • idc新人如何做自己的网站网站 按钮 素材
  • 做网站的相关协议西安高校定制网站建设公司推荐
  • 深圳小蚁人网站建设网页设计代码书
  • 国外优秀的平面设计网站企业做电商网站有哪些
  • 销售网站模板东昌府聊城网站优化
  • 成都高新区网站建设娄底建设企业网站
  • 网站打开不了怎样做wordpress添加播放器代码
  • 网站开发亮点长洲网站建设
  • 赣榆网站建设wordpress 首页 摘要 插件
  • 网站建设实训 课程标准学做简单网站视频教程
  • 国内用react做的网站如何建设手机版网站
  • 怎么分析一个网站seo如何做网站宣传自己