使用MyBatis框架操作数据, 在SpringBoot框架集成MyBatis
使用步骤
- mybatis起步依赖 : 完成mybatis对象自动配置, 对象放在容器中
- pom.xml 指定把src/main/java目录中的xml文件包含到classpath中
- 创建实体类Student
- 创建Dao接口 StudentDao , 创建一个查询学生的方法
- 创建Dao接口对应的Mapper文件, xml文件, 写sql语句
- 创建Service层对象, 创建StudentService接口和他的实现类。 去dao对象的方法。完成数据库的操作
- 创建Controller对象,访问Service。
- 写application.properties文件 配置数据库的连接信息。
我这边只测试了第一种,第二种和第三种未测试,不过应该按照下面的提示差不多
项目目录截图
第一种
server.port=8080
server.servlet.context-path=/student
#链接数据库
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=911
#日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
dao层java文件和xml文件
/*
告诉mybatis这是一个结果
创建此接口的代理
*/
@Mapper
public interface StudentDao {
Student selectById(Integer id);
}
<mapper namespace="com.xiaonan.springboot.dao.StudentDao">
<!--
定义sql语句
-->
<select id="selectById" resultType="com.xiaonan.springboot.pojo.Student">
select id,name,age from student where id=#{id}
</select>
</mapper>
student的pojo类
public class Student {
Integer id;
String name;
Integer age;
public Student() {
}
public Student(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
service中接口文件和实现类
public interface StudentService {
Student selectById(Integer id);
}
@Service
public class StudentImpl implements StudentService {
@Resource
StudentDao studentDao;
@Override
public Student selectById(Integer id) {
Student student=studentDao.selectById(id);
return student;
}
}
控制层
@Controller
public class StudentController {
@Resource
StudentService studentService;
@RequestMapping("/studentid")
@ResponseBody
public String selectID(int id){
Student student=studentService.selectById(id);
return student.toString();
}
}
springboot中启动类
@SpringBootApplication
public class SpringbootMapperApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMapperApplication.class, args);
}
}
第一种方式总结几点
总结经验
- dao层:分为接口和xml文件,其中接口上面必须使用mapper注解,配置文件使用方法和mybatis一样。
- service层:分为接口和接口实现类,必须在使用类上面用service注解,并且下面调用dao层时使用Resource注解
- 控制层:没有什么要说的了,注解使用和之前的一样
- properties文件里面,需要声明url,username,驱动等
- 日志反馈使用:mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
第二种方式 @MapperScan
其实简单来说,就是把dao层的接口和mapper的xml文件分别放在一个包里面,与其这样,还不如使用第三种
/**
* @MapperScan: 找到Dao接口和Mapper文件
* basePackages:Dao接口所在的包名
*/
@SpringBootApplication
@MapperScan(basePackages = {"com.bjpowernode.dao","com.bjpowernode.mapper"})
public class Application {
}
第三种方式: Mapper文件和Dao接口分开管理
1)在resources目录中创建子目录 (自定义的) ,例如mapper
2)把mapper文件放到 mapper目录中
3)在application.properties文件中,指定mapper文件的目录
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
4)在pom.xml中指定 把resources目录中的文件 , 编译到目标目录中
<!--resources插件-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
文章全部是本人原创,请勿转发,谢谢配合,版权所有-南香香-你会喜欢我吗
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com