1.ORM框架
1.1ORM简介
1.ORM:是Java对象和数据库表的映射。
1.2MyBatis使用
@Mapper,放在每个dao层接口文件上。
@Service,声明当前类是一个服务类,注入到容器中。
@MapperScan,放到主启动类上,找到dao所在的目录就可以,就不用写那么多的@Mapper注解了。
1.用MyBaties操纵数据库。
创建步骤:
-
MyBaties起步依赖
-
MySQL驱动的依赖
-
pom文件中src/main/java中的xml文件包含到classpath中
-
创建user类
-
常见UserDao。书写CDUQ方法。
-
创建Dao层对应的Mapper文件,xml文件,写SQL语句
-
创建Service对象,UserService接口,找dao层的方法
-
创建Controller对象,访问service
-
编写properties配置文件
2.创建过程
第一步:创建项目导入依赖。
第二步:创建数据库表user并配置pom文件
创建数据库表:
配置pom中的资源的路径:
-
可以在类路径中找到对应的文件了。
<!-- 注意是在build下,plugins外-->
<resources>
<resource>
<directory>src/main/java</directory>
<!-- 把Java目录下的所有xml文件输出到target目录中-->
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
第三步:创建实体类
public class User {
private int id;
private String name;
private int age;
private String sex;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", password='" + password + '\'' +
'}';
}
}
第四步:创建dao层文件
UserDao.java
/*
*告诉mybaties这个dao接口,创建这个接口的代理对象
* 放到类的上面
*/
@Mapper
public interface UserDao {
// @Param传入的参数
User selectUserById(int id);
}
UserDao.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">
<!--指定dao文件所在的位置-->
<mapper namespace="com.example.springboot005mybaties.dao.UserDao">
<!--定义sql语句-->
<!--
id指定的是dao层指定的方法的名称
resultType=""指定返回的类型,比如User实体指定的类
#{id}是dao层传入的参数
-->
<select id="selectUserById" resultType="com.example.springboot005mybaties.pojo.User">
select id,name,age,sex,password from user where id=#{id}
</select>
</mapper>
第五步:创建service层文件
UserService接口
public interface UserService {
// 根据用户id查询用户信息
public User selectUserById(int id);
}
UserServiceImpl实现类:
@Service
public class UserServiceImpl implements UserService {
// 推荐使用@Resource注入
@Resource
private UserDao userDao;
@Override
public User selectUserById(int id) {
return userDao.selectUserById(id);
}
}
第六步:创建controller文件
@Controller
public class UserController {
@Resource
private UserService userService;
@ResponseBody
@RequestMapping("/user/query")
public String selectUserById(int id){
return userService.selectUserById(id).toString();
}
}
第七步:编写配置文件
-
指定驱动名称
-
指定数据源url,user,password
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useSSL=false
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root
运行截图:
1.3mapper和dao分离存储
resource目录下创建自定义目录
Dao.xml放到自定义目录下
配置文件中指定mapper文件的目录
pom中指定resoures下的mapper目录
1.配置步骤
第一步:res目录下新建mappers文件夹,放入所有的XXXDaoxml文件。
第二步:配置mapper文件所在的位置
pom的配置
<resources>
<resource>
<directory>src/main/resources</directory>
<!--把res目录下的所有xml文件输出到target目录中-->
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
配置文件的配置
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useSSL=false
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root
##下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis.mapper-locations=classpath:mapper/*xml
扩展:日志的开启,配置文件多加航一条。
-
日志就会输出到控制台上
#将日志输入到控制台上
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
运行截图: