ps:spring boot、mybatis踩的坑,注解切记!!!
SpringBoot基础上集成Mybatis
- 项目分包
entity(module)、dao(mapper)、controller、service
资源目录下创建mappers目录
下图所示:
Application必须处在外层包中,否则会造成检索失败!
这里的dao也可用mapper来代替,mybatis采用mapper文件来进行数据库操作的处理
资源目录中mapper目录下存放与dao(即src下mapper这里写做dao)对应的.xml文件。
- 配置文件
application.properties 添加mybatis配置
mybatis配置文件(mapper.xml文件)
mybatis.mapper-locations=classpath:mapper/*.xml
实体类所在包包名
mybatis.type-aliases-package=com.lyj.manage.entity
pom.xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
json处理插件,这里采用阿里的fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.30</version>
</dependency>
rebuild 一下项目就可以了。
- 进行开发
1. 创建Dao
public interface UserDao {
int deleteByPrimaryKey(Integer id);
int insert(User record);
User selectByPrimaryKey(Integer id);
List<User> findAll();
}
2. 与dao对应的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.lyj.manage.dao.UserDao" >
<resultMap id="BaseResultMap" type="com.lyj.manage.entity.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id,name
</sql>
<select id="findAll" resultMap="BaseResultMap">
select * from initname
</select>
</mapper>
namespace:dao(包名+类名) type:对应的实体类 (包名+类名)
3. 创建Service
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> getUserList(){
return userDao.findAll();
}
}
这里为了方便添加,可以将service定义成interface,通过实现类实现。代码分离,更易读。
error!
- A component required a bean of type ’ ’ that could not be found.
解决办法:在每个Dao开头添加注解@Mapper或者在Application启动类中加注解@MapperScan(“与mapper.xml对应类的包名”)
start
sucess!
坑终于填上了,完成了第一个简单的spring boot +mybatis。