SpringBoot+Mybatis整合

本文详细介绍了如何将SpringBoot与Mybatis进行整合,从创建Maven项目到添加依赖,再到实体类、DAO接口、配置类的编写,以及配置文件的设置,最后实现Controller和前端页面,一步步展示了整合过程。
摘要由CSDN通过智能技术生成

一.创建一个Maven项目,在pom.xml文件中添加相关的jar包:
在这里插入图片描述
二.

  • 在src/main/java路径下创建一个cn.gf.boot包,作为其他类的父包(里面写启动程序).
  • 在同路径下创建cn.gf.boot.pojo包,编写实体类.
    在这里插入图片描述
    在这里插入图片描述
  • 然后创建cn.gf.boot.dao包:
    1.在dao包中创建一个UserDao接口,在接口上添加注解@Mapper(作用:告知springboot这个接口有映射配置文件)
    在这里插入图片描述
    2.在dao包中编写mybatis的配置
    2.1 首先在该类上加@Configuration,声明这个类是一个配置类,配置类会自动创建对象并执行,而且配置类必须有@Bean,该注解作用在方法上,用来告知方法产生一个Bean,然后交由spring容器管理.而且这个产生bean的方法只会被spring调用一次.(为什么只会被调用一次呢?)
    2.2 因为在该注解下有一个@ConditionalOnMissingBean注解.该注解配合@Bean一起使用.当它们所"修饰"的方法已经产生bean对象,就不会执行该方法,不存在bean对象就执行该方法产生一个.
    2.3 下面这个类中方法用来产生一个SqlSessionFactoryBean对象:
    在这里插入图片描述
package cn.gf.boot.dao;

import java.io.IOException;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//加注解声明这个类是一个配置类(配置类会自动创建对象并执行)(配置类中必须包含@Bean注解)
@Configuration 
public class MybatisConfiguration {
	
	@Bean	//方法级别的注解,告知方法产生一个bean,
	//然后交由spring容器管理,而且这个产生bean的方法只会被spring调用一次
	//当下面的方法产生的bean已经存在了就不执行注解下面的代码块,它和@Bean注解配合一起使用....
	@ConditionalOnMissingBean	
	//下面的这个方法来产生一个SQLSessionFactoryBean对象
	public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
		
		//1.设置数据源
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		
		//2.设置mybatis配置文件的路径
		sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis/mybatis-config.xml"));
		
		//3.new一个解析器对象来获取mybatis的映射文件(mapper.xml)
		PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		
		//4.获取到的映射文件有多个,声明一个数组来存放它们
		Resource[] mapperxml = null;
		//读取映射文件到数组中
		try {
			//通过解析器的getResource()方法来读取映射文件
			mapperxml = resolver.getResources("classpath:mybatis/mapper/*.xml");
			//把读取到的映射文件设置到工厂中
			sqlSessionFactoryBean.setMapperLocations(mapperxml);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//告知实体类的位置,给实体类设置别名
		sqlSessionFactoryBean.setTypeAliasesPackage("cn.gf.boot.pojo");
		return sqlSessionFactoryBean;
	}
	//配置扫描dao包
	@Bean//这个方法的bean创建条件是先创建好了上面的sqlsessionfactorybean
	@ConditionalOnBean(SqlSessionFactoryBean.class)
	public MapperScannerConfigurer msc() {
		//创建映射配置文件对象
		MapperScannerConfigurer msc = new MapperScannerConfigurer();
		//设置dao包的路径
		msc.setBasePackage("cn.gf.boot.dao");
		return msc;
	}
}

三.在src/main/resource路径中编写相应的配置
在这里插入图片描述
1.在根目录下新建一个application.properties文件,在文件里编写数据库的连接信息.
在这里插入图片描述
2.然后在resources目录下创建一个mybatis文件夹,在该文件夹中新建一个mybatis-config.xml文件
在这里插入图片描述
3.然后在mybatis文件夹下创建一个mapper文件,在该文件中编写UserDao.xml
在这里插入图片描述
四.创建cn.gf.boot.service包,编写UserService.java
在这里插入图片描述
五.创建cn.gf.boot.controller包,编写UserController.java

package cn.gf.boot.controller;

import java.io.UnsupportedEncodingException;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.gf.boot.pojo.User;
import cn.gf.boot.service.UserService;

@RestController
public class UserController {
	
	@Resource(name="userservice")
	private UserService us;
	
	@PostMapping("/adduser")
	public String addUser(HttpServletRequest request, HttpServletResponse response) {
	    //配置跨域问题
		response.setHeader("P3P", "CP=AO PSA OUR");
		response.addHeader("Access-Control-Allow-Origin", "*");
		try {
			request.setCharacterEncoding("utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		User user = new User();
		user.setUserCode(request.getParameter("usercode"));
		user.setUserName(request.getParameter("username"));
		user.setUserPassword(request.getParameter("pwd"));
		boolean rs = us.addUser(user);
		if(rs) {
			return "true";
		}else {
			return "false";
		}
	}
}

六.在这些包的父包cn.gf.boot中创建一个启动类
此时会发现之前创建好的cn.gf.boot包消失了…真的消失了!!解决办法:
1.在创建好此包的时候现在这个包里把启动类也创建出来.
2.在eclipse菜单栏中Window–>Show View–>Navigator视图模式,此时窗口左端的视图模式会变成层级视图,然后单击boot文件夹,新建启动类即可.
在这里插入图片描述
七.前端添加用户页面
在这里插入图片描述

运行结果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值