Mybatis是一款对于Sql进行了一定封装的持久化sql框架,将常用的crud接口进行了一定的封装,减轻了开发人员对于SQL操作的繁琐性,Mybatis有两种实现方式,一种是使用xml,一种使用注解方式。
一.mybatis结合xml的使用
1.添加依赖相应的依赖
2.对应的接口和mybatis的xml文件
3.springboot配置文件中添加mybatis的配置文件的扫描路径
4.简单的使用
1.添加依赖
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
mybatis是需要查数据库,所以必须要有对应的数据库连接依赖。
2.对应的接口
@Mapper
public interface UserMapper {
User selectUserById(int id);
}
3.对应的mybatis的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.example.mapper.UserMapper">
<select id="selectUserById" resultType="com.example.dao.User" parameterType="int" >
select id,name,age,sex from user where id=#{id}
</select>
</mapper>
这里面的xml文件中有 namespace的值就是接口的类的全路径名。然后里面select标签的id是接口方法名。返回类型是user类,返回的值会自动封装到该类里面,自动封装的前提条件是这个dao类的字段表名需要和数据库的字段一致才能自动封装如果不一致可以在xml中的sql需要查出来的字段使用别名使得字段,查询的条件是id参数类型是int类型。
//对应user类
public class User {
int id;
String name;
int age;
String sex;
// getter/setter
}
CREATE TABLE `user` (
`id` int(11) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` varchar(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
4.springboot配置文件中添加mybatis的配置文件的扫描路径和数据连接配置信息
#对应的数据库连接信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
# mybatisxml文件的扫描路径
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
这里是结合springboot使用。这mybatis的xml文件的位置是src/main/resources下新建一个mapper包,然后再里面新建一个xxxMapper.xml文件。
5.简单的使用
@RequestMapping("/mybatis1")
public ResultUtils mybatis1() {
System.out.println("这个是通过xml文件进行查找的。");
User user = userMapper1.selectUserById(1);
System.out.println(user);
}
6.结果的显示
User [id=1, name=zhangshan, age=11, sex=m]