蔡香满屋
站在牛顿头上吃苹果

集成mybatis有两种方式:

第一种:

基于注解的mybatis集成

下面是springboot集成mybatis的步骤:

第一步:创建springboot项目(需要集成mybatis,web,freemarker)

创建完之后整体pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>mybatisDemo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>mybatisDemo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
                  <!--freemarker集成-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>
            <!--web集成-->
		<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.0.0</version>
		</dependency>
                 <!--热部署继承-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
                 <!--mysql集成-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

    <!-- 能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
    	Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,
    	然后以通常的方式运行Spring Boot应用 -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>
                     

  实现完整的步骤如下:

创建一个bean类:

UserInfo.java

package com.example.demo.bean;

import java.io.Serializable;

public class UserInfo implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -4478598013397875213L;
	private Integer id;
	private String name;
	private String sex;
	
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

  创建一个控制器:

UserInfoController.java

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.example.demo.bean.UserInfo;
import com.example.demo.service.UserInfoService;

@Controller
@RequestMapping("/userinfo/")
public class UserInfoController {
	
	@Autowired
	private UserInfoService userInfoService;
	
	@RequestMapping("index")
	public String index(){
		return "index";
	}
	
	@RequestMapping("show")
	public String show(UserInfo userInfo,Model model){
		userInfo = userInfoService.findById(userInfo.getId());
		model.addAttribute("user", userInfo);
		return "index";
	}
	
}

  创建一个业务层的接口:

UserInfoService.java

package com.example.demo.service;

import com.example.demo.bean.UserInfo;

public interface UserInfoService {
public UserInfo findById(Integer id);
}

  业务层的实现类:

UserInfoServiceImpl.java

package com.example.demo.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.bean.UserInfo;
import com.example.demo.dao.UserInfoDao;
import com.example.demo.service.UserInfoService;

@Service
public class UserInfoServiceImpl implements UserInfoService{
	
	@Autowired
	private UserInfoDao userInfoDao;
	
	
	@Override
	public UserInfo findById(Integer id) {
		System.out.println("查找 id = " + id + "的数据");
		return userInfoDao.findById(id);
	}
	
}

  dao层:这里使用了注解方式:

UserInfoDao.java

package com.example.demo.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import com.example.demo.bean.UserInfo;

@Mapper
public interface UserInfoDao{
	
	@Select("select * from user_info where id = #{id}")
	@Results(
			value={
					@Result(column="id",property="id"),
					@Result(column="name",property="name"),
					@Result(column="sex",property="sex")
			}
			)
	public UserInfo findById(Integer id);
	
}

  其中freemarker前端界面如:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>index.html</h3>
<a href="/userinfo/show?id=1">查看用户信息</a><br>
<#if user??>
用户姓名:${user.name}
</#if>

</body>
</html>

  必备项目配置文件如下:

application-dev.properties

server.port=8092
logging.config=classpath:logback1-core.xml // 配置日志

spring.freemarker.suffix=.html
spring.freemarker.template-loader-path=classpath:/web

#datasource tomcat-jdbc
#加上&serverTimezone=GMT解决由于数据库和系统时区差异所造成的
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  application.properties

server.port=8090
spring.profiles.active=dev

  日志文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<!-- 文件输出格式 -->
	<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
	<!-- test文件路径 -->
	<property name="TEST_FILE_PATH" value="d:/opt/core/logs" />
	<!-- pro文件路径 -->
	<property name="PRO_FILE_PATH" value="/opt/core/logs" />

	<!-- 开发环境 -->
	<springProfile name="dev">
		<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
			<encoder>
				<pattern>${PATTERN}</pattern>
			</encoder>
		</appender>
		
		<!-- 日志的调试sql -->
		<logger name="com.example.demo" level="debug"/>
		
		<logger name="org.springframework.jdbc.core.JdbcTemplate" level="debug"></logger>

		<root level="info">
			<appender-ref ref="CONSOLE" />
		</root>
	</springProfile>

	<!-- 测试环境 -->
	<springProfile name="test">
		<!-- 每天产生一个文件 -->
		<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
			<!-- 文件路径 -->
			<file>${TEST_FILE_PATH}</file>
			<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
				<!-- 文件名称 -->
				<fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
				<!-- 文件最大保存历史数量 -->
				<MaxHistory>100</MaxHistory>
			</rollingPolicy>
			
			<layout class="ch.qos.logback.classic.PatternLayout">
				<pattern>${PATTERN}</pattern>
			</layout>
		</appender>
		
		<root level="info">
			<appender-ref ref="TEST-FILE" />
		</root>
	</springProfile>

	<!-- 生产环境 -->
	<springProfile name="prod">
		<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
			<file>${PRO_FILE_PATH}</file>
			<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
				<fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
				<MaxHistory>100</MaxHistory>
			</rollingPolicy>
			<layout class="ch.qos.logback.classic.PatternLayout">
				<pattern>${PATTERN}</pattern>
			</layout>
		</appender>
		
		<root level="warn">
			<appender-ref ref="PROD_FILE" />
		</root>
	</springProfile>
</configuration>

  整体框架结构如下:

访问地址:

http://127.0.0.1:8092/userinfo/index

第二种方式是使用配置文件的方式即(xx.xml)

在配置文件加上:

#mybatis
mybatis.mapper-locations=classpath:mybatis/*.xml
mybatis.type-aliases-package=com.cia.demo.bean

posted on 2019-03-16 22:58  蔡香满屋  阅读(212)  评论(0)    收藏  举报