如果餓了就喫,困了就睡,渴了就喝,人生就太無趣了
源碼地址: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的方法即可。不在過多贅述了