springboot集成mybatis
springboot整合了各种框架,采用各种starter启动器来引入我们需要的东西,它采用约定优于配置的原则,极大了简化了配置,提高了开发效率。下面是springboot集成mybatis进行开发。
1.pom配置文件中引入如下依赖
<!--引入web模块的starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot中mybatis的起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--Springboot热部署插件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
2.在springboot的核心配置properties文件中配置mybatis的相关信息
#编码设置,用于解决中文乱码问题
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
server.tomcat.uri-encoding=UTF-8
#页面映射配置
spring.mvc.view.prefix=/pages/
spring.mvc.view.suffix=.html
#数据库的相关配置
#配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/book
spring.datasource.username=root
spring.datasource.password=123456
#修改端口号,也可不改,默认为8080
server.port=8088
#配置实体类所在的包
mybatis.type-aliases-package=com.jason.test.bean
#配置mapper文件路径
mybatis.mapper-locations=classpath*:com/jason/test/mapper/*.xml
3.编写mapper接口也就是dao层,需要在mapper接口类上添加@Mapper注解
@Mapper
public interface CheckUser {
//登录验证用户信息
int select (Map map);
//查询用户信息
List<User> selectAll();
//删除用户
int del(int id);
//用户修改
int update(Map map);
}
注:
@Mapper注解的的作用
1.为了把mapper这个DAO交给Spring管理
2.为了不再写mapper映射文件(用sql注解的方式)
3.为了给mapper接口自动生成一个实现类 自动根据一个添加@Mapper注解的接口生成一个实现类
4.mapper接口所对应的mapper.xml文件(部分内容)
<?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="com.jason.test.dao.CheckUser">
<resultMap id="resultUser" type="com.jason.test.bean.User">
<result column="id" jdbcType="INTEGER" property="id"/>
<result column="username" jdbcType="VARCHAR" property="username"/>
<result column="password" jdbcType="VARCHAR" property="password"/>
<result column="address" jdbcType="VARCHAR" property="address"/>
<result column="phone" jdbcType="VARCHAR" property="phone"/>
<result column="nickname" jdbcType="VARCHAR" property="nickname"/>
<result column="signature" jdbcType="VARCHAR" property="signature"/>
<result column="usermark" jdbcType="VARCHAR" property="usermark"/>
<result column="membernum" jdbcType="VARCHAR" property="membernum"/>
</resultMap>
<!--用于登录验证用户信息-->
<select id="select" parameterType="map" resultType="int">
select count(*) from users where username=#{username} and password=#{password}
</select>
</mapper>
5.编写service层
@Service
public class CheckUserService {
//service层调用dao层服务
@Autowired(required = false) //表示如果无法自动注入时不报错,默认为true,当无法注入时报错
private CheckUser checkUser;
public int select(String username,String password){
Map map=new HashMap();
map.put("username",username);
map.put("password",password);
int user1=checkUser.select(map);
return user1;
}
public List<User> selectAll(){
return checkUser.selectAll();
}
public int del(int id){
return checkUser.del(id);
}
public int update(String username,String password,int id){
Map map=new HashMap();
map.put("username",username);
map.put("password",password);
map.put("id",id);
return checkUser.update(map);
}
}
6.编写controller 控制层
@Controller
public class TestController {
//控制器调用service层服务层
@Autowired
private CheckUserService checkUserService;
//项目启动跳到默认首页
@RequestMapping(value = "/")
public String pages(){
System.out.println("进入项目默认首页");
return "index/index";
}
//省略其他相关代码
}
7.启动类
@SpringBootApplication
@MapperScan(basePackages = "com.jason.test.dao") //扫描mapper接口包路径
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
通过以上7步,就完成了springboot中集成mybatis。
springboot集成mybatis时遇到的一些问题
1.当使用maven插件spring-boot:run 启动项目时会出现中文乱码。
这个时候需要在pom.xml中<build>
节点中加入
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--解决maven插件启动时中文乱码问题-->
<configuration>
<fork>true</fork>
<!-- spring-boot:run 中文乱码解决 -->
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration>
</plugin>
</plugins>
2.启动项目时报如下错误
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.jason.test.dao.CheckUser.select
,说明mapper.xml文件没有被编译成class文件。
这个时候需要在pom.xml中<build>
节点中加入
<!--解决xml文件无法编译成class的问题-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>