目录
一、Mybatis增删查改的基本注解
二、Mybatis增删查改注解的基本使用
三、总结
@Insert | 用于映射插入( 添加 )语句,等同于Mapper.xml文件中的 |
@Delete | 用于映射删除语句,等同于Mapper.xml文件中的 |
@Select | 用于映射查询语句,等同于Mapper.xml文件中的 |
@Update | 用于映射更新( 修改 )语句,等同于Mapper.xml文件中的 |
@Param | 用于指定SQL语句中的参数 |
创建一个为mybatis的数据库,选择该数据库,在该数据库中创建一个users的数据表 ,并向该数据表中添插入三条数据
-- 选择数据库
use mybatis
-- 创建数据表
create table users(
id int(32) primary key auto_increment,
name varchar(50),
age int(10),
sex varchar(20)
)
-- 查询数据表
select * from users
-- 插入数据 向里面插入三条数据
insert into users(name,age,sex) values("张三",18,"男"),("李四",18,"男"),("翠花",18,"女")
创建一个maven项目,在maven下的pom.xml中添加以下核心依赖jar包
org.mybatis
mybatis
3.4.6
mysql
mysql-connector-java
8.0.16
junit
junit
4.12
test
引入依赖之后,在src/main/resources目录下创建Mybatis-config.xml的核心配置以及db.properties的数据库连接源
Mybatis-config.xml的核心配置
db.properties的核心配置
DriverManager=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
user=root
password=root
接下来在maven下的src/main/java下创建com.demo.entity的实体类包,在entity下创建Users实体类,对Users类进行封装。
package com.demo.entity;
/**
* @BelongsProject: demo
* @BelongsPackage: com.demo.entity
* @Author: 云边小屋(My.Tears)
* @CreateTime: 2023-03-08 15:34
* @Description: TODO
* @Version: 1.0
*/
public class Users {
//用户id
private Integer id;
//用户姓名
private String name;
//用户年龄
private Integer age;
//用户性别
private String sex;
public Users(Integer id, String name, Integer age, String sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
public Users() {
}
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;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
创建好实体类之后,继续在maven下的src/main/java下创建com.demo.utils的工具类包,用于创建连接Mybatis的工具类
package com.demo.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
* @BelongsProject: demo
* @BelongsPackage: com.demo.utils
* @Author: 云边小屋(My.Tears)
* @CreateTime: 2023-03-08 15:44
* @Description: TODO
* @Version: 1.0
*/
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory = null;
//初始化SQLSessionFactory对象
static {
InputStream resourceAsStream = null;
try {
// 读取加载Mybatis-config.xml的配置文件
resourceAsStream = Resources.getResourceAsStream("Mybatis-config.xml");
// 构建SqlSessionFactory对象
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// 获取SQLSession的静态对象
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
代码示例:
package com.demo.mapper;
import com.demo.entity.Users;
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface UsersMapper {
/**
* 插入用户
*
* @param users id
* @return int
* @Insert注解插入
*/
@Insert("insert into users(name,age,sex) values(#{name},#{age},#{sex})")
int InsertUsers(Users users);
/**
* 删除用户
*
* @param id id
* @return int
* @Delete注解删除
*/
@Delete("delete from users where id = #{id}")
int DeleteUsers(int id);
/**
* 更新用户
*
* @param users id
* @return int
* @Update注解更新
*/
@Update("update users set name = #{name} , age = #{age} ,sex = #{sex} where id = #{id}")
int UpdateUsers(Users users);
/**
* 查询用户
*
* @return {@link List}<{@link Users}>
* @Select注解查询
*/
@Select("select * from users")
List SelectUsers();
/**
* 更新用户
*
* @param id id
* @param name 名字
* @param age 年龄
* @return int
* @Param注解更新
*/
@Update("update users set name = #{param1} ,age = #{param2} where id = #{param3}")
int ParamUsers(@Param("param3") int id, @Param("param1") String name, @Param("param2") int age);
}
package com.demo.mapper;
import com.demo.entity.Users;
import com.demo.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
public class UsersMapperTest {
private SqlSession sqlSession = null;
private UsersMapper usersMapper = null;
@Before
public void setUp() throws Exception {
// 连接数据库
sqlSession = MybatisUtils.getSqlSession();
// 获取接口
usersMapper = sqlSession.getMapper(UsersMapper.class);
}
@After
public void tearDown() throws Exception {
// 提交事务
sqlSession.commit();
// 释放资源
sqlSession.close();
}
/**
* 插入用户
*/
@Test
public void insertUsers() {
Users users = new Users();
users.setAge(20);
users.setName("靓仔2号");
users.setSex("男");
int i = usersMapper.InsertUsers(users);
if (i > 0) {
System.out.println("添加成功!");
} else {
System.out.println("添加失败!");
}
}
/**
* 删除用户
*/
@Test
public void deleteUsers() {
int i = usersMapper.DeleteUsers(7);
if (i > 0) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败,数据不存在!");
}
}
/**
* 更新用户
*/
@Test
public void updateUsers() {
Users users = new Users();
users.setSex("女");
users.setId(8);
users.setAge(20);
users.setName("雨欣");
int i = usersMapper.UpdateUsers(users);
if (i > 0) {
System.out.println("更新成功!");
} else {
System.out.println("更新失败!");
}
}
/**
* 查询用户
*/
@Test
public void selectUsers() {
List users = usersMapper.SelectUsers();
for (Users user : users) {
System.out.println(user);
}
}
/**
* 更新用户
*/
@Test
public void paramUsers() {
int i = usersMapper.ParamUsers(2, "憨憨", 20);
if (i > 0) {
System.out.println("更新成功!");
} else {
System.out.println("更新失败!");
}
}
}
所以可以把一些需要频繁编写的代码根据测试的运行顺序去放置
Mybatis的注解开发只适用于那些较简单的映射语句,在对于较为复杂的映射语句的时候,代码的可读性就不是很好了,会显的代码很乱,所以建议在编写复杂的映射语句的时候,尽量采用Mapper.xml的形式编写。