SpringBoot入门学习(三) ----集成thymleaf ,集成Mybatis,集成Mybatis-Plus

19 篇文章 0 订阅

SpringBoot集成thymleaf
springboot 不推荐使用JSP , SpringBoot官方推荐使用的模版是Thymeleaf , FreeMarker , Groovy
当我们使用上述模板引擎中的任何一个,SpringBoot默认的模板配置路径为:src/main/resources/templates。
使用模版的时候我们需要在配置文件中添加几条配置,SpringBoot自动会读取默认的配置文件路径是在resources下的application.properties文件,这里我们在配置 配置参数如下

spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html

引入相关的jar包

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

在目录templates下新建一个index.html文件 ( 注意 后面的反斜线)
新创建一个Controller 类的注解上使用Controller 而不是RestController,RestController返回的是JSON,Controller注解返回的是页面; controller类内容如下

@Controller
public class PageController {
	@RequestMapping("/index")
	public String index() {
		return "index";
	}
}

访问http://localhost:8080/index 即可跳转到index.html页面

SpringBoot集成Mybatis
引入mybatis相关的包

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>

在application.properties中填写我们的连接数据库相关的配置信息

spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis.mapper-locations=classpath:mapper/*.xml

创建一个实体类

package top.fuly.demo.entity;

public class User {
	private int id;
	private String username;
	private String sex;
	XXXget(){...}
	XXXset(){...}
	}

创建一个mapper

package top.fuly.demo.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import top.fuly.demo.entity.User;

@Mapper
public interface UserMapper {
	@Select("select * from user where id = #{id}")
	User selectUserById(@Param("id") Integer id);

	@Insert("INSERT INTO user (`id`, `username`, `sex`) VALUES (NULL, #{name}, #{sex});")
	int insert(@Param("name") String name, @Param("sex") String sex);
}

创建对应的数据库

调用

@RestController
public class FirstController {
	 @Autowired
	 private UserMapper userMapper;
	 @RequestMapping("/user/get")
	 public String getUser(Integer id){
	 return userMapper.selectUserById(id).toString();
	 }
}

测试 http://localhost:8080/user/get?id=1

springboot事务
事务特性 (经常忘 手打一遍)
A 原子性 : 多条语句要么都执行,要么都不执行,不可分割
C 一致性: 事务提交后所有的所有的客户端取到的数据都一样
I 隔离性 :并发事务所作出的修改 必须与其他事务所做出的修改隔离
D 持久性 : 事务完成后,对数据的修改是永久性的

springboot中的事务比较简单
service中的方法 使用 @Transactional 注解
如:

@Transactional
public void transcationtest(Integer id) {
		userMapper.update("DeleteTHIS", id);
		userMapper.delete(id);
}
//这两条语句要么都执行,要么都不执行,如果中间出现错误,那么都不执行

集成Mybatis-Plus(MP)
MP是什么:是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MP特性:无侵入,依赖少,损耗小,防SQL注入,通用CRUD,多种主键策略,代码生成,内置分页插件。。。。
导包

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.1.4</version>
</dependency>

添加一个配置文件(这个是定死的)

package top.fuly.demo.config;

import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

import com.baomidou.mybatisplus.MybatisConfiguration;
import com.baomidou.mybatisplus.MybatisXMLLanguageDriver;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;

@Configuration
public class MybatisPlusConfig {
@Autowired
   private DataSource dataSource;
   @Autowired
   private MybatisProperties properties;
   @Autowired
   private ResourceLoader resourceLoader = new DefaultResourceLoader();
   @Autowired(required = false)
   private Interceptor[] interceptors;
   @Autowired(required = false)
   private DatabaseIdProvider databaseIdProvider;
   /**
    *   mybatis-plus分页插件
    */
   @Bean
   public PaginationInterceptor paginationInterceptor() {
       PaginationInterceptor page = new PaginationInterceptor();
       page.setDialectType("mysql");
       return page;
   }
   /**
    * 这里全部使用mybatis-autoconfigure 已经自动加载的资源。不手动指定
    * 配置文件和mybatis-boot的配置文件同步
    * @return
    */
   @Bean
   public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {
       MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
       mybatisPlus.setDataSource(dataSource);
       mybatisPlus.setVfs(SpringBootVFS.class);
       if (StringUtils.hasText(this.properties.getConfigLocation())) {
           mybatisPlus.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
       }
       mybatisPlus.setConfiguration(properties.getConfiguration());
       if (!ObjectUtils.isEmpty(this.interceptors)) {
           mybatisPlus.setPlugins(this.interceptors);
       }
       MybatisConfiguration mc = new MybatisConfiguration();
       mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
       mybatisPlus.setConfiguration(mc);
       if (this.databaseIdProvider != null) {
           mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider);
       }
       if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {
           mybatisPlus.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
       }
       if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {
           mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());
       }
       if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {
           mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations());
       }
       return mybatisPlus;
   }
}

改造mapper (就继承一个BaseMapper 传参)

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

使用

 @Autowired
	 private UserMapper userMapper;
	 @RequestMapping("/user/get")
	 public String getUser(Integer id){
		 return userMapper.selectById(1).toString();
	 }
	 @RequestMapping("/user/add")
	 public String add(){
		 User user = new User();
		 user.setId(1);
		 user.setSex("不男不女");
		 user.setUsername("张三李四");
		 Integer integer =  userMapper.updateById(user);
		 return "执行成功  "+integer;
	 }

卧槽 就这么简单
在这里插入图片描述
其余方法慢慢学吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值