创建工程
创建springboot应用时,添加web依赖,mybatis依赖,mysql驱动的依赖
项目创建成功后,pom文件依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--如果用的mysql8要修改成对应版本-->
<version>8.0.19</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
在配置文件application.properties添加相关配置,这里默认使用Hikari数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///mybatis?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root;
spring.datasource.password=admin;
配置完成后,就可以直接创建mapper进行crud了
- 建表
CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
);
- userbean
public class User {
private Integer id ;
private String name ;
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;
}
}
- mapper类
@Mapper
public interface UserMapper {
@Select("select * from user")
public List<User>findAll();
@Select({"select * from user where id=#{id}"})
public User findById(int id);
@Insert("insert into user(name) values(#{name})")
@Options(useGeneratedKeys = true,keyProperty = "id")
public int add(User user);
@Update("update user set name=#{user.name} where id=#{user.id}")
public void update(User user);
@Delete("delete from user where name=#{user.name}")
public void delete(User user);
}
通过注解的方式写SQL语句,@Mapper注解表示这是一个mapper类,springboot扫描到后将其添加到容器中,当然,也可以采用另外一种方式,就是在启动类中添加Mapper扫描:
@MapperScan(basePackages="com.xsw.mappe.*")//扫描这个包下
@Insert、@Update、@Select、@Delete分别就对应标签insert、update、select、delete的作用。
@options注解实现主键回填的功能;useGeneratedKeys = true 表示使用数据库表的自增长主键, keyProperty = “id” 表示回填的对象属性。
测试
创建controller:
@RestController
public class UserController {
//注入mapper
@Autowired
UserMapper userMapper;
/*
查询所有
*/
@RequestMapping("/findAll")
public List<User> findAll(){
return userMapper.findAll();
}
/*
添加
*/
@RequestMapping("/add")
public String add(User user){
int result = userMapper.add(user);
if(result!=0){
return "添加成功";
}else{
return "添加失败";
}
}
}
测试添加:
测试查询:
前面是通过注解的方式写SQL语句,简单快速;也可以使用xml配置文件的方式,灵活动态的生成SQL:
配置
跟注解的方式一样,只不过需要添加:
mybatis.mapper-locations=classpath:mapper/*.xml
这是告诉mybatis到哪里去扫描mapper
在类路径下创建mapper目录,添加userMapper.xml配置文件
然后就可以在xml文件中写对应接口的SQL语句了,
<?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.xsw.springbootmybatis.dao.UserDao">
<insert id="add" parameterType="com.xsw.springbootmybatis.entity.User">
insert into user(name) values(#{name})
</insert>
<update id="update" parameterType="com.xsw.springbootmybatis.entity.User">
update user set name=#{name} where id=#{id}
</update>
<select id="findAll" resultType="com.xsw.springbootmybatis.entity.User">
select * from user
</select>
<select id="findByName" parameterType="java.lang.String" resultType="com.xsw.springbootmybatis.entity.User">
select * from user where name=#{name}
</select>
<delete id="delete" parameterType="com.xsw.springbootmybatis.entity.User">
delete from user where name=#{name}
</delete>
</mapper>
编写dao层对应的接口
@Mapper
public interface UserDao {
public List<User> findAll();
public User findByName(String name);
public int add(User user);
public void update(User user);
public void delete(User user);
}
使用就是跟注解的方式一样了。