注解方式
1.直接在dao层接口的方法上加@select("sql语句")
2.在启动类上加扫描的注解@MapperScan(basePackages = "dao层这个接口所在的包路径")
3.注:如果实体类和数据库里的字段不一致,比如说:数据库字段是create_time,实体类pojo中是createTime,(数据库字段对应实体类字段是小驼峰命名),这种情况下第一、二步查出的数据createTime是null,就要在配置类中(application.yml)添加下面配置
dao层?
package com.imooc.mall.dao;
//@Mapper 不写的话在启动类加扫描注解 public interface CategoryMapper { @Select("select * from mall_category where id = #{id}")
Category findById(@Param("id") Integer id);
}
?启动类
@SpringBootApplication
@MapperScan(basePackages = "com.imooc.mall.dao") //dao层package后面的
public class MallApplication {
public static void main(String[] args) {
SpringApplication.run(MallApplication.class, args);
}
}
application.yml
#mybatis用注解方式,数据库对应实体用到了小驼峰命名,需要添加下面配置
mybatis:
configuration:
map-underscore-to-camel-case: true
?xml方式
1.在dao层接口中写方法
2.在resources下建mappers文件,文件下建:接口名.xml
3.在xml中写SQL语句(xml中,这个颜色的是注释)
4.在配置文件中,让程序找到xml的位置
dao层
public interface CategoryMapper {
Category queryById(Integer id);
}
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">
<!-- namespace后面写的是:接口名-->
<mapper namespace="com.imooc.mall.dao.CategoryMapper">
<!-- 对应下面select语句中的include refid里面写的内容-->
<sql id="Base_Column_List">
id,parent_id,name,status,sort_order,create_time,update_time
</sql>
<!--select id 后面写的是接口里面是方法名 resultType后面写的是返回的类型,就是实体的包路径-->
<select id="queryById" resultType="com.imooc.mall.pojo.Category">
select
<!-- include refid 后面是字段的引用 对应上面SQL id -->
<include refid="Base_Column_List"></include>
from mall_category
where id = #{id}
</select>
</mapper>
?
配置文件
mybatis:
# 配置xml的位置
mapper-locations: classpath:mappers/*.xml
|