
pojo 包pojo 包下。@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id; //ID
private String username; //用户名
private String password; //密码
private String name; //姓名
private Integer age; //年龄
}mapper 包,在该包下创建接口 UserMapper@Mapper
public interface UserMapper {
@Select("select * from user")
public List<User> findAll();
}#数据库访问的url地址
spring.datasource.url=jdbc:mysql://localhost:3306/‘数据库名’
#数据库驱动类类名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#访问数据库-用户名
spring.datasource.username=root
#访问数据库-密码
spring.datasource.password=root@1234src 底下的 test 目录下,已经创建好了测试类,改造即可@SpringBootTest
class SpringbootMybatisQuickstartApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testFindAll(){
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user);
}
}
}编写 Mybatis 中
单元测试中
注意:新版本 idea 已经自动配置,如果为新版,请自行跳过



在 application.properties 加入配置, 即可在控制台查看日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#{ } 占位来实现 SQL 预编译,在单元测试中编写具体逻辑来实现@Delete("delete from user where id =#{id}")
public void deleteById(Integer id);@Test
public void testDeleteById(){
userMapper.deleteById(36);
}@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")
public void insert(User user);@Test
public void testInsert(){
User user = new User();
user.setUsername("admin");
user.setPassword("123456");
user.setName("管理员");
user.setAge(30);
userMapper.insert(user);
}@Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}")
public void update(User user);@Test
public void testUpdate(){
User user = new User();
user.setId(6);
user.setUsername("admin666");
user.setPassword("123456");
user.setName("管理员");
user.setAge(30);
userMapper.update(user);
}@Select("select * from user where username = #{username} and password = #{password}")
public User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);@Test
public void testFindByUsernameAndPassword(){
User user = userMapper.findByUsernameAndPassword("admin666", "123456");
System.out.println(user);
}细节:在 Mapper 接口中,我们通过 @Param 注解来指定参数的名称,是因为在字节码文件中,变量名不能保存,#{ } 查询不到信息。
Mybatis 的开发的两种方式,第一种是注解,第二种就是 XML XML 主要用于完成复杂的 SQL 功能
XML 配置文件规范
com. backend. mapper 包下,都叫 Usermapper,只是为 xml 文件)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>namescpace 里面是 UserMapper 的全限定名<select> 标签:用于编写 select 查询语句
- id 里面是 UserMapper 里的方法名
- resuletType 里面是 User 的全限定名<?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.backend.mapper.UserMapper">
<!-- resultTyle : 查询返回的单条数据所封装的类型-->
<select id="findAll" resultType="com.backend.pojo.User">
select id,username,name,age from user
</select>
</mapper>//这里没有注解
List<User> findAll();
先看一下 JDBC 程序的缺点:
再看以下 Mybatis 是如何解决这些问题
这篇文章到此结束,感谢观看