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

网络最火游戏排行榜百度免费优化

网络最火游戏排行榜,百度免费优化,长沙小学网站建设,互联网产品做网站好还是小程序之前我们已经介绍了两种在Spring Boot中访问关系型数据库的方式#xff1a; 使用spring-boot-starter-jdbc使用spring-boot-starter-data-jpa 虽然Spring Data JPA在国外广泛流行#xff0c;但是在国内还是MyBatis的天下。所以#xff0c;今天这篇我们将具体说说如何在Spri…之前我们已经介绍了两种在Spring Boot中访问关系型数据库的方式 使用spring-boot-starter-jdbc使用spring-boot-starter-data-jpa 虽然Spring Data JPA在国外广泛流行但是在国内还是MyBatis的天下。所以今天这篇我们将具体说说如何在Spring Boot中整合MyBatis完成关系型数据库的增删改查操作。 整合MyBatis 第一步新建Spring Boot项目在pom.xml中引入MyBatis的Starter以及MySQL Connector依赖具体如下 dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version2.1.1/version/dependencydependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId/dependency关于mybatis-spring-boot-starter的版本需要注意 2.1.x版本适用于MyBatis 3.5、Java 8、Spring Boot 2.12.0.x版本适用于MyBatis 3.5、Java 8、Spring Boot 2.0/2.11.3.x版本适用于MyBatis 3.4、Java 6、Spring Boot 1.5 其中目前还在维护的是2.1.x版本和1.3.x版本。 第二步同之前介绍的使用jdbc模块和jpa模块连接数据库一样在application.properties中配置mysql的连接配置 spring.datasource.urljdbc:mysql://localhost:3306/testspring.datasource.usernamerootspring.datasource.passwordspring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver当然也可以不用默认数据源如果要使用Druid作为数据库连接池的话可以参见《Spring Boot 2.x使用国产数据库连接池Druid》一文。 第三步Mysql中创建一张用来测试的表比如User表其中包含id(BIGINT)、age(INT)、name(VARCHAR)字段。 具体创建命令如下 CREATE TABLE User ( id bigint NOT NULL AUTO_INCREMENT, name varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, age int DEFAULT NULL, PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci第四步创建User表的映射对象User DataNoArgsConstructorpublic class User { private Long id; private String name; private Integer age; public User(String name, Integer age) { this.name name; this.age age; }}第五步创建User表的操作接口UserMapper。在接口中定义两个数据操作一个插入一个查询用于后续单元测试验证。 Mapperpublic interface UserMapper { Select(SELECT * FROM USER WHERE NAME #{name}) User findByName(Param(name) String name); Insert(INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})) int insert(Param(name) String name, Param(age) Integer age);}第六步创建Spring Boot主类 SpringBootApplicationpublic class Chapter35Application { public static void main(String[] args) { SpringApplication.run(Chapter35Application.class, args); }}第七步创建单元测试。具体测试逻辑如下 插入一条nameAAAage20的记录然后根据nameAAA查询并判断age是否为20测试结束回滚数据保证测试单元每次运行的数据环境独立 Slf4jRunWith(SpringRunner.class)SpringBootTestpublic class Chapter35ApplicationTests { Autowired private UserMapper userMapper; Test Rollback public void test() throws Exception { userMapper.insert(AAA, 20); User u userMapper.findByName(AAA); Assert.assertEquals(20, u.getAge().intValue()); }}注解配置说明 下面通过几种不同传参方式来实现前文中实现的插入操作来学习一下MyBatis中常用的一些注解。 使用Param 在之前的整合示例中我们已经使用了这种最简单的传参方式如下 Insert(INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age}))int insert(Param(name) String name, Param(age) Integer age);这种方式很好理解Param中定义的name对应了SQL中的#{name}age对应了SQL中的#{age}。 使用Map 如下代码通过MapString, Object对象来作为传递参数的容器 Insert(INSERT INTO USER(NAME, AGE) VALUES(#{name,jdbcTypeVARCHAR}, #{age,jdbcTypeINTEGER}))int insertByMap(MapString, Object map);对于Insert语句中需要的参数我们只需要在map中填入同名的内容即可具体如下面代码所示 MapString, Object map new HashMap();map.put(name, CCC);map.put(age, 40);userMapper.insertByMap(map);使用对象 除了Map对象我们也可直接使用普通的Java对象来作为查询条件的传参比如我们可以直接使用User对象: Insert(INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age}))int insertByUser(User user);这样语句中的#{name}、#{age}就分别对应了User对象中的name和age属性。 增删改查 MyBatis针对不同的数据库操作分别提供了不同的注解来进行配置在之前的示例中演示了Insert下面针对User表做一组最基本的增删改查作为示例 public interface UserMapper { Select(SELECT * FROM user WHERE name #{name}) User findByName(Param(name) String name); Insert(INSERT INTO user(name, age) VALUES(#{name}, #{age})) int insert(Param(name) String name, Param(age) Integer age); Update(UPDATE user SET age#{age} WHERE name#{name}) void update(User user); Delete(DELETE FROM user WHERE id #{id}) void delete(Long id);}在完成了一套增删改查后不妨我们试试下面的单元测试来验证上面操作的正确性 TransactionalRunWith(SpringRunner.class)SpringBootTestpublic class ApplicationTests { Autowired private UserMapper userMapper; Test Rollback public void testUserMapper() throws Exception { // insert一条数据并select出来验证 userMapper.insert(AAA, 20); User u userMapper.findByName(AAA); Assert.assertEquals(20, u.getAge().intValue()); // update一条数据并select出来验证 u.setAge(30); userMapper.update(u); u userMapper.findByName(AAA); Assert.assertEquals(30, u.getAge().intValue()); // 删除这条数据并select验证 userMapper.delete(u.getId()); u userMapper.findByName(AAA); Assert.assertEquals(null, u); }}返回结果绑定 对于增、删、改操作相对变化较小。而对于“查”操作我们往往需要进行多表关联汇总计算等操作那么对于查询的结果往往就不再是简单的实体对象了往往需要返回一个与数据库实体不同的包装类那么对于这类情况就可以通过Results和Result注解来进行绑定具体如下 Results({ Result(property name, column name), Result(property age, column age)})Select(SELECT name, age FROM user)ListUser findAll();在上面代码中Result中的property属性对应User对象中的成员名column对应SELECT出的字段名。在该配置中故意没有查出id属性只对User对应中的name和age对象做了映射配置这样可以通过下面的单元测试来验证查出的id为null而其他属性不为null TestRollbackpublic void testUserMapper() throws Exception { ListUser userList userMapper.findAll(); for(User user : userList) { Assert.assertEquals(null, user.getId()); Assert.assertNotEquals(null, user.getName()); }}本文主要介绍几种最为常用的方式更多其他注解的使用可参见文档下一篇我们将介绍如何使用XML配置SQL的传统使用方式。 更多本系列免费教程连载「点击进入汇总目录」 代码示例 本文的相关例子可以查看下面仓库中的chapter3-5目录 Githubhttps://github.com/dyc87112/SpringBoot-Learning/Giteehttps://gitee.com/didispace/SpringBoot-Learning/ 如果您觉得本文不错欢迎Star支持您的关注是我坚持的动力
http://www.huolong8.cn/news/97179/

相关文章:

  • 石家庄网站建设石家庄在WordPress
  • 商城网站前期推广校园网站建设的用处
  • 用me做后缀的网站游戏怎么开发
  • wordpress主题栏是什么意思seo排名优化课程
  • 三亚官方网站建设手机wordpress怎么保存图片
  • 北京网站建站台州律师网站建设
  • 哪些网站可以做招商广告没有域名的网站
  • 程序员帮忙做放贷网站苏州保洁公司招聘保洁区域经理
  • 绵阳网站开发做视频解析网站犯法吗
  • h5自响应式网站模版门户网站建设的报价
  • 南昌市建设工程质量监督站网站wordpress首页不显示页面
  • 澄海网站建设部署个人网站
  • 上海网站制作公司哪家好台山市网站建设
  • 合肥制作网站价格设计类专业专科学校
  • 外贸网站支付接口网络服务器可提供的常见服务
  • 企业只有建立自己的网站平台那些网站能够做推广
  • 免费奖励自己的网站网页制作的平台
  • 广州网站下载安装网易企业邮箱邮件保存多久
  • 电子商务网站开发九洲建设app
  • 网站 微信开发网站 psd
  • 网站第三方统计工具钓鱼网站的域名怎么不稳定
  • 做简历最好的网站宿迁市房地产信息网
  • 网站开发要哪些音乐设计网站推荐
  • 个人网站建设基础与实例ae模板下载
  • 简述营销导向的企业网站建设的步骤wordpress学习教程
  • 凡科网站怎么修改昨天做的网站水果网站策划方案
  • 外贸机械网站建设网站文件夹命名怎么做
  • 惠州网站建设报价成都市城乡建设局网站
  • 软件工网站开发课程设计报告wordpress宝塔伪静态
  • 网站做一些流量互换网络营销与传统营销有哪些区别