回顾spring框架如何整合mybatis
springboot如何整合mybatis
下面会用到的包结构:
- 引入依赖
在pom.xml中引入下面依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.2.4version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.38version>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.1.4version>
dependency>
另外,有可能在引入依赖时特别慢,我们需要在pom.xml中加入下面几段话使用阿里云镜像:
<repositories>
<repository>
<id>aliyun-reposid>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<snapshots>
<enabled>falseenabled>
snapshots>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun-pluginid>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<snapshots>
<enabled>falseenabled>
snapshots>
pluginRepository>
pluginRepositories>
- 书写配置
# 整合mybatis相关配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 指定数据源类型,使用阿里巴巴的数据源
driver-class-name: com.mysql.jdbc.Driver # 指定数据库驱动
url: jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8 # 指定url
username: root # 指定用户名
password: root # 指定密码
mybatis:
mapper-locations: classpath:com/baizhi/mapper/*.xml # 指定mapper配置文件的位置
type-aliases-package: com.baizhi.eneity # 为实体类起别名 默认 类名或类名首字母小写
接下来要扫描dao接口创建对象
在扫描dao接口所在的包创建对象时有两种方法:
第一种是在入口类上加上@MapperScan(“com.baizhi.dao”)注解,这种方式可以一次向创建dao包中所有的DAO
第二种是直接在DAO接口上加上@Mapper注解,这种方式每次只能创建一个DAO
推荐使用第一种
第一种:入口类上加一个注解@MapperScan扫描dao接口所在的包
@SpringBootApplication
@MapperScan("com.baizhi.dao") // 修饰范围: 用在类上 作用:用来扫描dao接口所在的包 同时将所有dao接口在工厂中创建对象
public class SpringbootDay3Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootDay3Application.class, args);
}
}
第二种:在DAO接口上加上@Mapper注解
@Mapper
public interface UserDAO {
// 查询所有
List<User> findAll();
// 保存用户信息
void save(User user);
}
- 测试
需要用到的包结构
public class User {
private Integer id;
private String name;
private Date birthday;
private Double salary;
// 提供有参、无参、get、set、toString方法
//为了避免影响阅读体验,这里没有粘,但是是有的
}
public interface UserDAO {
// 查询所有
List<User> findAll();
// 保存用户信息
void save(User user);
}
<mapper namespace="com.baizhi.dao.UserDAO">
<select id="findAll" resultType="com.baizhi.eneity.User">
select id, name, birthday, salary from user
select>
<insert id="save" parameterType="com.baizhi.eneity.User" useGeneratedKeys="true" keyProperty="id">
insert into user values (#{id}, #{name}, #{birthday}, #{salary})
insert>
mapper>
public interface UserService {
// 查询所有
public List<User> findAll();
// 保存用户信息
public void save(User user);
}
@Service
@Transactional
public class UserServiceImpl implements UserService{
private UserDAO userDAO;
@Autowired
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
@Override
public List<User> findAll() {
return userDAO.findAll();
}
@Override
public void save(User user) {
userDAO.save(user);
}
}
@RestController
public class UserController {
private UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
// 保存的方法
@RequestMapping("save")
public void save(User user){
userService.save(user);
}
// 查询所有
@RequestMapping("findAll")
public List<User> findAll(){
return userService.findAll();
}
}
开启SpringBoot应用测试一下: