真的是工作劲头一天不如一天,springboot真的是简洁~
昨天纠结了一会还是把这个配置文件改成yml格式了,主要是书写起来比较简洁。
开始整合mybatis,首先application.yml中的配置
#数据库配置 spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/testdata username: root password: 123123 mybatis: config-location: classpath:mybatis/mybatis-config.xml mapper-locations: classpath:mybatis/mapper/*.xml
上面是配置数据源,下面是mybatis的配置文件放置的位置,两个路径都是以resources作为根目录保存的,所以要创建一个文件夹在resources下,如下架构:
在创建之前上网找过类似的教程,大体上可以分为两类整合方法,注解类和xml类。因为之前一直是用mybatis+springmvc,所以比较习惯的是使用xml类,当然mybatis也针对springboot进行了优化。所以以下笔记皆是极简xml类的写法。
首先是两个配置文件
mybatis-config.xml 这个文件如果你有需求可以进行配置,引用一个对mybatis-config.xml的解释,博主写的很详细,留下以后慢慢读,嘿嘿~
我这里的配置文件就空空如也了,我暂时不需要。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>
然后是mapper.xml,说之前了解一下表结构
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` bigint(100) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`usersex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (1, 'aaaa', 'bbb', 'ccc', 'ddd');
SET FOREIGN_KEY_CHECKS = 1;
根据表结构创建UserMapper.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.learn.paomo.mapper.UserMapper" > <resultMap id="resultmap" type="com.learn.paomo.entity.User" > <id column="id" property="id" jdbcType="BIGINT" /> <result column="username" property="userName" jdbcType="VARCHAR" /> <result column="password" property="passWord" jdbcType="VARCHAR" /> <result column="usersex" property="userSex" jdbcType="VARCHAR"/> <result column="nickname" property="nickName" jdbcType="VARCHAR" /> </resultMap> <select id="searchList" resultMap="resultmap" > SELECT username,password,usersex,nickname FROM users </select> </mapper>
然后依次创建实体类和Dao层,实体类和DAO不粘了,看一下结构:
这两个分别是实体类和DAO,DAO还是粘一下吧,哝:
package com.learn.paomo.mapper; import com.learn.paomo.entity.User; import java.util.List; public interface UserMapper { List<User> searchList(); }
最后一步:PaomoApplication.java(*Application.java)文件增加一行代码
package com.learn.paomo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.learn.paomo.mapper") public class PaomoApplication { public static void main(String[] args) { SpringApplication.run(PaomoApplication.class, args); } }
@MapperScan:通过使用@MapperScan可以指定要扫描的Mapper类的包的路径。注解。
ojbk。现在去Controller类里查看一下是怎么调用的。
package com.learn.paomo.controller; import com.learn.paomo.entity.User; import com.learn.paomo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class HelloWorldController { @Autowired private UserMapper userMapper; @RequestMapping("/helloworld") public List<User> HelloWorld(){ List<User> list=userMapper.searchList(); // System.out.println(list.get(0).getNickName()); return list; } }
没有用service层,直接调用的DAO。只需要给UserMapper加注解@Autowired就行。运行一下。
哝。。
记录一下碰到的问题:
1.如果碰到了数据库的问题,或者mapper配置文件的问题,别怀疑,慢慢看,肯定是自己写错了,比如我把localhost落下一个l ,百度了1小时。。。。
2.idea用户可能会碰到一个问题就是在Controller里引用mapper使用@Autowired注解的时候,会报红。运行应该没问题,但是就是Could not autowire. No beans of 'UserMapper' type found. less... (Ctrl+F1)
Checks autowiring problems in a bean class.这样的错误。然后File-->setting-->editor-->下图
休息一下~~