使用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>
文章全部是本人原创,请勿转发,谢谢配合,版权所有-南香香-你会喜欢我吗