如果饿了就吃,困了就睡,渴了就喝,人生就太无趣了
源码地址:https://github.com/keer123456789/springbootstudy/tree/master/mybatisdemo
1.项目配置
1.1 maven依赖配置
主要是mysql
和mybatis
的依赖,注意mysql
的版本,根据自己的版本进行改动。
<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.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
1.2 mysql配置
在application.properties
添加mysql的配置,根据需要修改配置内容,本次使用的数据库文件mybatis.sql
在项目中。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
1.3 mybatis配置
在resource
文件夹下创建mybatis
文件夹,添加mybatis-config.xml
配置文件,此文件是mybatis
的基础配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
在application.properties
添加该配置文件位置
mybatis.config-location=classpath:mybatis/mybatis-config.xml
2.两种使用方式
mybatis
在SpringBoot
中提供了两种方式,一种是XML方式,一种是注解的方式。
下面只讲解mybatis
的用法,完整代码参见:github>>>
2.1 使用XML
2.1.1.在数据库中创建user
表
如图1:
2.1.2.创建User
对象类
如图2:创建相应的成员变量,并添加getter()
,setter()
和toString()
方法
2.1.3.添加Mapper映射
本次通过增,删,改,查四个方法进行说明
public interface UserMapper {
/**
* 获取全部用户信息
* @return
*/
List<User> getAll();
/**
* 通过id查询用户信息
* @param id
* @return
*/
User getUserInfoByID(String id);
/**
* 增加用户信息
* @param user
* @return
*/
int addUserInfo(User user);
/**
* 更改用户姓名
* @param name
* @param id
* @return
*/
int updateUserNameByID(String name,String id);
/**
* 根据用户ID删除用户信息
* @param id
* @return
*/
int deleteUserInfoByID(String id);
}
2.1.4 添加相应的xml
文件
创建相应的xml文件:UserMapper.xml
,将每个方法的sql语句全在在这里实现:
- mapper中的
namespace
一定要和相应的mapper文件对应好 resultMap
是将查询出的数据和相应的对象类对应上- 其余的中id属性要和方法名称对应上
- 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.keer.mybatisdemo.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.keer.mybatisdemo.pojo.User">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="sex" property="sex" jdbcType="VARCHAR"/>
</resultMap>
<select id="getAll" resultMap="BaseResultMap">
select * from user;
</select>
<select id="getUserInfoByID" parameterType='string' resultMap="BaseResultMap">
select * from user where id=#{id}
</select>
<insert id="addUserInfo" parameterType="com.keer.mybatisdemo.pojo.User">
insert into user (id,name,sex)values (#{id},#{name},#{sex})
</insert>
<update id="updateUserNameByID">
update user set name=#{name} where id=#{id}
</update>
<delete id="deleteUserInfoByID">
delete from user where id =#{id}
</delete>
</mapper>
在resource/mybatis
文件夹下创建mapper
文件夹,将UserMapper.xml
放在此文件夹中
并在在application.properties
添加该mapper文件位置
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
2.1.5 使用例子
1.select 查询
@Autowired
UserMapper userMapper;
@Test
@DisplayName("获取全部用户信息")
public void testGetAllUser() {
System.out.println(userMapper.getAll().toString());
}
@Test
@DisplayName("根据用户id获取用户信息")
public void testGetUserInfoByID() {
Assert.assertEquals("张",userMapper.getUserInfoByID("1").getName());
}
2.insert 插入
@Test
@DisplayName("增加用户信息")
public void testAddUserInfo() {
User user = new User("keer", "男", "2");
Assert.assertEquals(1, userMapper.addUserInfo(user));
}
3.update 更新
@Test
@DisplayName("根据用户id更新用户姓名")
public void testUpdateUserNameByID() {
Assert.assertEquals(1,userMapper.updateUserNameByID("可耳", "2"));
}
4.delete 删除
@Test
@DisplayName("根据用户id删除用户信息")
public void testDeleteUserInfoByID() {
Assert.assertEquals(1,userMapper.deleteUserInfoByID("2"));
}
2.2 使用注解
2.2.1 创建people
表
如图3:
2.1.2.创建People
对象类
如图4:创建相应的成员变量,并添加getter()
,setter()
和toString()
方法
2.1.3 创建mapper对象
将xml中的信息通过注解的方式展现
通过使用select
,insert
,update
,delete
注解替换xml文件中的相应标签
public interface PeopleMapper {
/**
* 查询全部个人信息
* @return
*/
@Select("select * from people")
@Results({
@Result(property = "id",column = "id"),
@Result(property = "name",column = "name"),
@Result(property = "age",column = "age"),
@Result(property = "address",column = "address")
})
List<People> getAllPeopleInfo();
/**
* 根据id查询个人信息
* @param id
* @return
*/
@Select("select * from people where id=#{id}")
@Results({
@Result(property = "id",column = "id"),
@Result(property="name",column = "name"),
@Result(property = "address",column = "address"),
@Result(property = "age",column = "age")
})
People getPeopleInfoByID(int id);
/**
* 增加人员信息
* @param people
* @return
*/
@Insert("insert into people(id,name,address,age)values(#{id},#{name},#{address},#{age})")
int addPeopleInfo(People people);
/**
* 根据ID更改人员姓名
* @param name
* @param id
* @return
*/
@Update("update people set name=#{name} where id = #{id}")
int updatePeopleNameByID(String name,int id);
/**
* 根据ID删除人员信息
* @param id
* @return
*/
@Delete("delete from people where id= #{id}")
int deletePeopleInfoByID(int id);
}
此时可以在这个mapper上加上@Mapper
让该文件被扫描到,如果mapper文件很多,就可以在启动类上添加注解MapperScan
,让其扫描整个mapper文件夹。
@SpringBootApplication
@MapperScan("com.keer.mybatisdemo.mapper")
public class MybatisdemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisdemoApplication.class, args);
}
}
使用方法和xml的方法相同,直接调用mapper的方法即可。不在过多赘述了