第一篇 Springboot + Web MVC + MyBatis + 简单UI + Thymeleaf实现

源码链接:https://pan.baidu.com/s/1-LtF56dnCM277v5lILRM7g
提取码:c374

第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml

第一个博文没什么废话直接上图和代码
点击【File】- 【New】-【Project】新建项目,

点击【Finish】完成项目的创建,目录结构如下

连接数据库还需要在pom.xml文件中增加一个依赖spring-boot-starter-jdbc,同时将mysql-connector-java依赖的scope属性修改成version版本不修改可能会出现数据库连接不上,另外增增加了依赖项thymeleaf是个模板框架前端使用的。

maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的,所以我们还要在pom.xml增加下面配置

pom.xml文件依赖部分和resources部分代码如下:

<dependencies>
    <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>2.1.1</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
        <version>2.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <!-- maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的 -->
    <!-- 增加下面resource配置将resources目录下的文件和java目录下的配置文件添加资源映射-->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

下面我们来修改程序启动项配置和数据库连接配置:
将application.properties文件重命名为application.yml,鼠标右键-【Refactor】-【Rname】,之后编辑application.yml文件

在resources目录下新建mybatis-config.xml文件,代码如下图片部分代码编辑器会自动隐藏只能截图:

<!-- 配置mybatis的缓存,延迟加载等等一系列属性 -->
<settings>

    <!-- 全局映射器启用缓存 -->
    <setting name="cacheEnabled" value="true"/>

    <!-- 查询时,关闭关联对象即时加载以提高性能 -->
    <setting name="lazyLoadingEnabled" value="true"/>

    <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
    <setting name="multipleResultSetsEnabled" value="true"/>

    <!-- 允许使用列标签代替列名 -->
    <setting name="useColumnLabel" value="true"/>

    <!-- 不允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
    <setting name="useGeneratedKeys" value="false"/>

    <!-- 给予被嵌套的resultMap以字段-属性的映射支持 FULL,PARTIAL -->
    <setting name="autoMappingBehavior" value="PARTIAL"/>

    <!-- 对于批量更新操作缓存SQL以提高性能 BATCH,SIMPLE -->
    <!-- <setting name="defaultExecutorType" value="BATCH" /> -->

    <!-- 数据库超过25000秒仍未响应则超时 -->
    <!-- <setting name="defaultStatementTimeout" value="25000" /> -->

    <!-- 允许对嵌套语句使用行边界 -->
    <setting name="safeRowBoundsEnabled" value="false"/>

    <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn. -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>

    <!-- MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all queries executed during a session are cached. If localCacheScope=STATEMENT
        local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession. -->
    <setting name="localCacheScope" value="SESSION"/>

    <!-- Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values
        like NULL, VARCHAR or OTHER. -->
    <setting name="jdbcTypeForNull" value="OTHER"/>

    <!-- Specifies which Object's methods trigger a lazy load -->
    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>

    <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
    <setting name="aggressiveLazyLoading" value="false"/>

</settings>

配置项都已完成,下面开始代码部分目录结构如下图新增Controller、Service、Mapper、Model:

选中big.strong.disheng右键【New】-【Package】输入big.strong.disheng.user.model创建model包,在model右键【New】-【Java Class】添加实体类User,添加4个属性

代码生成getter和setter的快捷键是alt+Insert:

package big.strong.disheng.user.model;
public class User {
private Long userId;

private String username;

private String password;

private Integer age;

public Long getUserId() { return userId; }

public void setUserId(Long userId) { this.userId = userId; }

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

}

在dao包添加UserMapper类

代码:
package big.strong.disheng.user.dao;

import big.strong.disheng.user.model.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface UserMapper {
int deleteByPrimaryKey(Long userid);

int insert(User record);

int insertSelective(User record);

User selectByPrimaryKey(Long userid);

List<User> selectAll();

int updateByPrimaryKeySelective(User record);

int updateByPrimaryKey(User record);

}

dao包下的UserMapper.xml文件内容(增删改查语句)编辑器将其大部分内容忽略显示异常截取部分截图供参考,需要完整代码可到最下方有连接去下载

service包中的UserService接口文件很简单,是User的查询和修改两个接口代码
package big.strong.disheng.user.service;

import big.strong.disheng.user.model.User;

import java.util.List;

public interface UserService {

List<User> selectAll();

int updateByPrimaryKeySelective(User record);

}
UserServiceImpl类

UserServiceImpl代码:
package big.strong.disheng.user.service.Impl;

import big.strong.disheng.user.dao.UserMapper;
import big.strong.disheng.user.model.User;
import big.strong.disheng.user.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

@Resource
private UserMapper userMapper;

@Override
public List<User> selectAll() { return userMapper.selectAll(); }

@Override
public int updateByPrimaryKeySelective(User record) {
    return userMapper.updateByPrimaryKeySelective(record);
}

}
控制类UserController如下图:

上面修改User的请求一定注意@ResponseBody和@RequestBody别漏掉,否则后台会无法响应前端的请求
UserController代码:
package big.strong.disheng.user.controller;

import big.strong.disheng.user.model.User;
import big.strong.disheng.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/user")
public class UserController {

@Autowired
private UserService userService;

@RequestMapping("/list")
public ModelAndView list(){
    List<User> users=userService.selectAll();
    ModelMap model = new ModelMap();
    model.addAttribute("users",users);
    return new ModelAndView("userlist",model);
}

@RequestMapping(value = "/update", method = { RequestMethod.POST })
@ResponseBody
public Map<String,String> update(@RequestBody User user){
    Map<String,String> result=new HashMap<>(1);
    int i = userService.updateByPrimaryKeySelective(user);
    if(i > 0){ result.put("success","ok"); }
    else{ result.put("success","更新失败"); }
    return result;
}

}

最后上userlist.html代码中thymeleaf绑定数据如下

userlist.html代码编辑器无法显示,需要完整代码可到最下方有连接去下载

到目前为止代码全部完成,点击菜单栏【Build】-【Rebuild Ojbect】编译项目,编译完成后点击菜单栏【Run】-【Debug ‘DishengApplication’】项目运行(DishengApplication是项目名称),打开浏览器输入http://localhost:8001/user/list显示下面画面,端口号是在application.yml中设置的,前提数据库中有数据

点击【编辑】可以修改用户名称

第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml

源码链接:https://pan.baidu.com/s/1-LtF56dnCM277v5lILRM7g
提取码:c374

猜你喜欢

转载自www.cnblogs.com/big-strong-yu/p/12333152.html