springboot ssm整合
注意事项
springboot会默认扫描启动类下一级,所以代码写在启动类下一级
创建项目
file–>new–>project
选择spring Initializr
在core中选择DevTools
在Web中选择web
在sql中选择MySql和MyBatis
pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- jstl标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--json-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
数据库 数据库名test1
CREATE TABLE `user_user` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`u_age` int(11) DEFAULT NULL,
`u_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
配置文件 application.yml
application.yml等同于application.properties 内容一样但是约束不一样
spring:
mvc:
view:
# 页面默认前缀目录
prefix: /
# 响应页面默认后缀
suffix: .jsp
datasource:
username: root
password: mokong
url: jdbc:mysql://127.0.0.1:3306/test1?serverTimezone=UTC
mybatis:
type-aliases-package: com.example
mapper-locations: classpath:sqlmap/*.xml
logging:
level:
com:
jyj:
dev: debug
代码
model
package com.example.ssm.User.model;
import java.io.Serializable;
public class User implements Serializable {
private Integer uId;
private String uName;
private Integer uAge;
public User() {
}
public User(Integer uId, String uName, Integer uAge) {
this.uId = uId;
this.uName = uName;
this.uAge = uAge;
}
public Integer getuId() {
return uId;
}
public void setuId(Integer uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public Integer getuAge() {
return uAge;
}
public void setuAge(Integer uAge) {
this.uAge = uAge;
}
@Override
public String toString() {
return "User{" +
"uId=" + uId +
", uName='" + uName + '\'' +
", uAge='" + uAge + '\'' +
'}';
}
}
mapper
不推荐查询语句用注解写
package com.example.ssm.User.dao;
import com.example.ssm.User.model.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;
import java.util.*;
@Mapper
public interface UserMapper {
@Insert("INSERT INTO test1.user_user (u_age, u_name)VALUES(#{uAge}, #{uName})")
void addUser(User u);
@Delete("DELETE FROM test1.user_user WHERE u_id = #{uId}")
void delUser(User u);
@Update("UPDATE test1.user_user SET u_age = #{uAge} , u_name = #{uName} where u_id = #{uId} ")
void updateUser(User u);
List<User> selectAllUser(User u);
}
userMapper.xml
本文件位置在resources目录下sqlmap
<?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.ssm.User.dao.UserMapper">
<resultMap id="u" type="com.example.ssm.User.model.User">
<id column="u_id" property="uId"></id>
<result column="u_name" property="uName"></result>
<result column="u_age" property="uAge"></result>
</resultMap>
<select id="selectAllUser" resultMap="u">
SELECT u_id,
u_age,
u_name
FROM
test1.user_user
</select>
</mapper>
UserService接口
package com.example.ssm.User.service;
import com.example.ssm.User.model.User;
import java.util.*;
public interface UserService {
void addUser(User u);
void updateUser(User u);
void delUser(User u);
List<User> selectAllUser(User u);
}
UserServiceImpi实现类
package com.example.ssm.User.service;
import com.example.ssm.User.dao.UserMapper;
import com.example.ssm.User.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public class UserServiceImpi implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void addUser(User u) {
userMapper.addUser(u);
}
@Override
public void updateUser(User u) {
userMapper.updateUser(u);
}
@Override
public void delUser(User u) {
userMapper.delUser(u);
}
@Override
public List<User> selectAllUser(User u) {
return userMapper.selectAllUser(u);
}
}
事务
需要在启动类中加一个注解
@EnableTransactionManagement
测试
package com.example.ssm;
import com.example.ssm.User.model.User;
import com.example.ssm.User.service.UserService;
import com.example.ssm.User.service.UserServiceImpi;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Controller;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
@EnableTransactionManagement
public class SsmApplicationTests {
@Test
public void contextLoads() {
}
@Autowired
private UserService userServiceImpi;
@Test
public void selectAllUser(){
User u = null;
List<User> users = userServiceImpi.selectAllUser(u);
for (User user : users){
System.err.println(user);
}
}
@Test
public void addUser(){
User u = new User();
u.setuName("test");
u.setuAge(12);
userServiceImpi.addUser(u);
}
@Test
public void updateUser(){
User u = new User();
u.setuId(1);
u.setuName("test2");
u.setuAge(12);
userServiceImpi.updateUser(u);
}
@Test
public void delUser(){
User u = new User();
u.setuId(2);
userServiceImpi.delUser(u);
}
}