新手如何学习SpringBoot集成各大框架?

一、SpringBoot介绍

            SpringBoot是由Pivotal团队提供的框架,设计目的是简化新Spring应用的初始搭建以及开发过程,
         该框架使用了特定的方式(继承starter,预定大于配置)来进行配置,其实,从根本上他就是一些库的集合,
         maven或者gradle项目导入相应依赖即可使用springboot。

二、Springboot作用特性:

	内置tomcat  :构建的fat jar包通过java –jar就可以直接在cmd中运行 或者点击启动类main方法
	全注解(MyBatis注解)
	热部署 :只有导包的时候需要重新启动,其他不需要重新启动 使用可以使用spring-boot-devtools来实现!
	yml替代xml配置
	简化applicationContext.xml等配置 : 配置简单、部署简单、监控简单
	可以集成各大框架: MyBatis 、JPA、JDBC 、Hibernate

三、如何使用SpringBoot集成Mybatis框架

3.1 创建Maven项目

3.2 在pom.xml中引入相关依赖

		基本依赖、jdk版本号
		Mysql驱动 、MyBatis依赖包、mysql分页PageHelper
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	 
	<!-- Spring Boot 父文件 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
	</parent>
		<!-- 修改tomcat版本 -->
	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<!--Spring Boot web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<!-- 热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency>

		<!--必须有才能编译jsp -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>
		
		<!-- 连接数据库 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
	
		<!-- Junilt4测试-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
		
		<!-- spring-boot mybatis依赖 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.0</version>
		</dependency>

		<!-- spring boot mybatis 分页插件 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.2</version>
		</dependency>
		
    	  	  <!-- 打印sql语句  在这里是自己写的插件-->
		<dependency>
			<groupId>org.kd</groupId>
			<artifactId>mybatis-tool-box</artifactId>
			<version>1.0-M9</version>
		</dependency> 

	</dependencies>

</project>

3.3 创建启动类App.java

@SpringBootApplication
@MapperScan("cn.itsource.springboot.mybatis.mapper")
public class App {
    public static void main( String[] args ) {
        SpringApplication.run(App.class, args);
    }
}
//这里和以往不一样的地方就是MapperScan的注解,这个是会扫描该包下的接口

3.4 在application.properties或者application.yml中配置文件

两者取并集 如果都有的话以properties为基准
	application.yml配置:
		连接数据库信息
		Mybatis信息
		Spring配置
		日志信息 
		代码如下:
spring:
  mvc:
    view: 
      prefix: /WEB-INF/jsp/
      suffix: .jsp
     # 上面是对jsp支持配置
     # 数据库连接配置
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url : jdbc:mysql://localhost:3306/spring-boot-demo?useUnicode=true&characterEncoding=utf-8 
    username : root
    password : admin
# Mybatis配置
mybatis:
  typeAliasesPackage: cn.itsource.model
  mapperLocations: classpath:cn/itsource/dao/mapper/*.xml
  configLocation: classpath:mybatisConfig.xml  #引入自定义的插件
  #日志
logging:
   level:
    cn:
     itsource: DEBUG 

3.5 基本的crud操作:

		写一个domian : User.java
		写一个dao : IuserDao接口    
			crud方法:
				注解sql方式:
				映射xml  sql方式:
		写一个Dao.mapper : 映射文件
		Service省略……….    需要开启事务以及@service实现类
		写一个test:测试是否成功
		写一个controller和前台页面交互
		具体代码如下:

===============================================================
user.java省略 :定义两个字段测试 :username password
IuserDao接口  :
注意:类上面的注解以及采用注解方式sql  和映射xml  sql方式
注解sql方式:
@Mapper 
public interface IUserDao {
	
	@Select("select * from t_user")
	List<User> getAll();
	
	@Delete("delete from t_user where id = #{id}")
	void delete(Long id);
	
	void save(User user);
	
	void update(User user);
	
	@Select("select * from t_user where id = #{id}")
	User getOne(Long id);
	
============================================================	
映射xml  sql方式:
<?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="cn.itsource.dao.IUserDao">
	//保存
	<insert id="save">
		insert into t_user (username ,password) values (#{username} , #{password})
	</insert>
	//修改
	<update id="update" parameterType="user">
		update t_user set username = #{username} , password=#{password} where id =#{id}
	</update>
   //查询一条
   <select id="getOne" parameterType="Long" resultType="user"> //因为在yml中设置了别名
   		select * from t_user where id = #{id}
   </select>
</mapper>

============================================================
service层:
	IUserService接口:定义crud方法 以及分页插件的方法
	//分页查询
	PageInfo<User> queryPage(Integer pageNum , Integer pageSize);
	UserService实现类:
@Service 
@Transactional(readOnly=true) //开启事务
public class UserServiceImpl implements IUserService{
	
	@Autowired
	IUserDao userdao;

	@Override
	@Transactional
	public void save(User user) {
		userdao.save(user);
		
	}

	@Override
	@Transactional
	public void delete(Long id) {
		userdao.delete(id);
		
	}

	@Override
	@Transactional
	public void update(User user) {
		userdao.update(user);
		
	}

	@Override
	public User getOne(Long id) {
		// TODO Auto-generated method stub
		return userdao.getOne(id);
	}

	@Override
	public List<User> getAll() {
		// TODO Auto-generated method stub
		return userdao.getAll();
	}

	//分页查询
	@Override
	public PageInfo<User> queryPage(Integer pageNum, Integer pageSize) {
		Page<Object> startPage = PageHelper.startPage(pageNum, pageSize);
		List<User> all = userdao.getAll();
		//在这里,怎么把分页的数据包裹进去呢?直接New PageInfo就行了
		return new PageInfo<>(all);
	}
========================================================================
test层:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=StartApp.class)
public class MyBatisTest {
	
	@Autowired
	IUserService userService;
	
	//删除
	@Test
	public void testDelete() throws Exception {
		userService.delete(1L);
	}
	
	//保存
	@Test
	public void testSave() throws Exception {
		User user = new User();
		user.setUsername("xxx");
		user.setPassword("xxx");
		userService.save(user);
	}
	
	//查询单个
	@Test
	public void testGetOne() throws Exception {
		 User one = userService.getOne(4L);
		 System.out.println(one);
	}
	
	//修改
	@Test
	public void testUpdate() throws Exception {
 
		User user2 = new User();
		user2.setId(4L);
		user2.setUsername("2222");
		userService.update(user2);
	}
	
	//查询所有
	@Test
	public void testGetAll() throws Exception {
		List<User> all = userService.getAll();
		for (User user : all) {
			System.out.println(user);
		}
	}
	
	//分页查询
	@Test
	public void testQueryPage() throws Exception {
		
		PageInfo<User> queryPage = userService.queryPage(0, 2);
		//查询总条数
		long total = queryPage.getTotal();
		System.out.println(total);
		//分页查询的数据
		List<User> list = queryPage.getList();
		for (User user : list) {
			System.out.println(user);
		}
		
	}
	
	//面试题:
	@Test
	public void testPage() throws Exception {
		PageHelper.startPage(0,2);//因为它只能分下面的一条 使用AOP切入 使用算法 limit
		List<User> all = userService.getAll();
		List<User> all2 = userService.getAll(); //它其实就是查询所有的
		System.out.println(all.size());  //分页条
		System.out.println(all2.size()); //数据库总条数
		
	}
}
	以上测试crud基本操作成功,在实际开发项目中使用MyBatis较多,因此小编给大家使用了这种方式,其实集成其他
	的框架也是如此,比如:JPA  、JDBC 、Hibernate 都是使用同样的方式,只是他们本身的操作crud方式不一样而已

}

猜你喜欢

转载自blog.csdn.net/weixin_42075468/article/details/83866603
今日推荐