整合SSM框架应用
时间:2022-07-24
本文章向大家介绍整合SSM框架应用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
普通方式
新建spring模块时引入如下内容:
启用devtools插件(热部署插件)
idea需要做如下配置
settings-build-compiler->勾选build project autoxxx选项
shift+alt+ctrl+/ ->registry->勾选compiler.automake.allow.when.app.running
在springboot插件里做如下配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--必须配置devtools-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
启用lombok(通过注解生成get/set等方法)
settings-plugins-搜索lombok-安装lombok插件
结构:
使用lombok插件的实体类
package com.example.bootssm1.domain;
import lombok.*;
import java.math.BigDecimal;
import java.util.Date;
//使用了lombok插件
@Data //自动生成get/set/toString等方法
@AllArgsConstructor//生成包含所有变量的构造方法
@NoArgsConstructor//生成无参的构造方法
public class BookInfo {
private Integer bookId;
private String bookName;
private String bookAuthor;
private BigDecimal bookPrice;
private Date bookDate;
}
Mapper类
package com.example.bootssm1.mapper;
import com.example.bootssm1.domain.BookInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper // 把该接口生成的代理类的实例交给spring容器控制
public interface BookMapper {
BookInfo getBookById(Integer bookId);
int saveBook(BookInfo bookInfo);
int batchBook(List<BookInfo> books);
}
Mapper配置xml
<?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.bootssm1.mapper.BookMapper">
<select id="getBookById" resultType="bookInfo">
select book_id, book_name, book_author, book_price, book_date
from t_book where book_id = #{id}
</select>
<insert id="saveBook" parameterType="bookInfo">
insert into t_book(book_name, book_author, book_price, book_date)
values(#{bookName}, #{bookAuthor}, #{bookPrice}, #{bookDate})
</insert>
<insert id="batchBook" parameterType="list">
insert into t_book(book_name, book_author, book_price, book_date)
values
<foreach collection="books" item="val" open="(" close=")" separator=",">
#{val.bookName}, #{val.bookAuthor}, #{val.bookPrice},#{val.bookDate}
</foreach>
</insert>
</mapper>
application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///testdb?useSSL=true
username: root
password: 123
mybatis:
configuration:
map-underscore-to-camel-case: true # book_id => bookId,book_name=> bookName 映射字段名到实体类的属性
mapper-locations: classpath:mapper/*Mapper.xml #指定mapper.xml的路径
type-aliases-package: com.example.bootssm1.domain # 定义别名名称 默认为实体类类名首字母小写
测试类:
package com.example.bootssm1;
import com.example.bootssm1.domain.BookInfo;
import com.example.bootssm1.mapper.BookMapper;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest
public class BootSsm1ApplicationTests {
@Resource
private BookMapper bookMapper;
@Test
public void selectOne() {
BookInfo book = bookMapper.getBookById(2);
System.out.println(book);
}
@Test
public void save() {
BookInfo book = bookMapper.getBookById(2);
book.setBookName("新书");
int row = bookMapper.saveBook(book);
Assert.assertEquals(1, row);
}
}
整合tk.mybatis
结构:
pom引入依赖
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
BaseMapper
package com.example.bootssm2.common;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
/**
* 项目中所有Mapper类的父类
* @param <T>
*/
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}
实体类:
package com.example.bootssm2.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "t_book")//设定表名
public class BookInfo {
@Id // 设定为主键
private Integer bookId;
private String bookName;
private String bookAuthor;
private BigDecimal bookPrice;
private Date bookDate;
}
具体Mapper(只要继承BaseMapper即可)
package com.example.bootssm2.mapper;
import com.example.bootssm2.common.BaseMapper;
import com.example.bootssm2.domain.BookInfo;
public interface BookInfoMapper extends BaseMapper<BookInfo> {
}
application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///testdb?useSSL=true
username: root
password: 123
mapper:
identity: MYSQL
not-empty: true
mappers:
- tk.mybatis.mapper.common.Mapper
- tk.mybatis.mapper.common.MySqlMapper
#启用日志打印SQL语句
logging:
level:
com.example.bootssm2.mapper: debug
测试类:
package com.example.bootssm2;
import com.example.bootssm2.domain.BookInfo;
import com.example.bootssm2.mapper.BookInfoMapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import tk.mybatis.spring.annotation.MapperScan;
import java.util.Arrays;
@SpringBootApplication
@MapperScan("com.example.bootssm2.mapper")
public class BootSsm2Application {
public static void main(String[] args) {
ConfigurableApplicationContext
context = SpringApplication.run(BootSsm2Application.class, args);
BookInfoMapper mapper = context.getBean(BookInfoMapper.class);
BookInfo book1 = mapper.selectByPrimaryKey(2);
BookInfo book2 = mapper.selectByPrimaryKey(4);
BookInfo book3 = mapper.selectByPrimaryKey(5);
mapper.insertList(Arrays.asList(book1, book2, book3));
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
- Laravel框架下载,安装及路由操作图文详解
- PHP实用小技巧之调用录像的方法
- Laravel重定向,a链接跳转,控制器跳转示例
- Laravel 错误提示本地化的实现
- Laravel框架DB facade数据库操作详解
- laravel 解决强制跳转 https的问题
- 在laravel中实现将查询的对象转换为多维数组的函数
- 在Laravel 中实现是否关注的示例
- Laravel框架查询构造器常见用法总结
- laravel 解决多库下的DB::transaction()事务失效问题
- laravel 实现上传图片到本地和前台访问示例
- laravel框架模型中非静态方法也能静态调用的原理分析
- Laravel 5.2 文档 数据库 —— 起步介绍
- laravel csrf排除路由,禁止,关闭指定路由的例子