集成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
浙公网安备 33010602011771号