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>
来源:https://www.cnblogs.com/jasonboren/p/12285945.html