MyBatis
MyBatis是一款基于Java语言的持久层 持久层是指一个软件系统中负责对数据进行持久化存储和操作的模块或组件,通常用于将业务对象映射到底层数据库中的表结构,以便于对数据进行增、删、改和查等操作 框架,它通过优秀的SQL映射支持,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作,使得开发者可以将精力更多地放在业务逻辑的处理上面。同时,它还可以与Spring等主流框架集成使用,提高了应用的扩展性
要使用MyBatis,你需要以下几个步骤:
通过 Maven 构建工具引入 MyBatis 的依赖包。
1 2 3 4 5
| <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency>
|
再 resources
包下 编写 MyBatis 配置文件,配置 SQL 映射关系、数据库连接信息等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>
<properties resource="db.properties"> </properties>
<typeAliases>
<package name="com.Miku_39.pojo"/> </typeAliases>
<environments default="development">
<environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${db.driver}" /> <property name="url" value="${db.url}" /> <property name="username" value="${db.user}" /> <property name="password" value="${db.pwd}" /> </dataSource> </environment> </environments>
<mappers>
<mappers resource="mapper/TestMyBatis.xml"/> </mappers> </configuration>
|
如果要使用批量注册但不使用其他框架 mapper.xml
文件需要放置在主要文件夹后 比如: com\Miku_39\mapper
1 2 3 4 5 6
| db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Beijing db.user=root db.pwd=root
|
编写 SQL 映射文件,定义 SQL 语句、参数映射以及结果映射等。
在 src > main > java > com > Miku_39 > Mapper
下添加Mapper接口
1 2 3 4 5 6 7 8 9 10 11 12 13
| public interface UserMapper { User selectUserById(Integer id); List<User> selectUserAll() Integer insertUser(User user); Integer deleteUser(User user); Integer update(User user);
}
|
在resources > mapper
包下编写映射文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <?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.Miku_39.Mapper.UserMapper">
<select id="selectUserById" resultType=""> SELECT * FROM ???? WHERE id=#{id} </select> <select id="selectUserAll" resultType=""> SELECT * FROM ???? </select> <insert id="insertUser"> INSERT INTO ???? () VALUES (#{????}) </insert> <update id="updateUser" > UPDATE ???? SET ???? = #{ ???? } WHERE ????=#{ ???? } </update> <delete id="deleteUser"> DELETE FROM ???? WHERE ?? =#{ ?? } </delete>
</mapper>
|
在 Java 代码中通过 MyBatis 工厂模式获取 SqlSession 对象, SqlSession 执行 SQL。
使用MavenMaven 是一款自动化构建工具,Maven 能够帮助开发者管理和构建 Java 项目,让项目开发更加规范化和自动化,提高开发效率和代码质量 导入JUnit JUnit 是一个 Java 的单元测试框架,,帮助开发者编写、运行和管理单元测试任务。
使用JUnit 编写测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| 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 org.junit.After; import org.junit.Before; import org.junit.Test;
import java.io.IOException; import java.io.InputStream;
import java.util.Date; import java.util.List;
public class MybTest { SqlSession session = null; @Before public void MapperBefore() throws IOException { String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); session=sqlSessionFactory.openSession(true); } @After public void MapperAfter() { session.close(); }
@Test public void Usertest() throws IOException { User user=session.getMapper(UserMapper.class).selectUserById(1); System.out.println(user); }
@Test public void addUserTest() throws IOException { User user=new User( ?? , ?? ); int count = session.getMapper(UserMapper.class).insertUser(user); if (count > 0) { System.out.println("添加成功"); }else { System.out.println("添加失败"); } }
}
|