首页 > 应用开发 > Java > 好程序员Java学习路线分享MyBatis之基本使用
好程序员Java 学习路线分享 MyBatis 之基本使用, 前言 , 本章我们将开始学习一个非常优秀的ORM (对象关系映射)框架: MyBatis ,它是目前企业中使用最多的数据库框架。
MyBatis 是一款优秀的 持久层框架,它支持定制化 SQL 、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO ( Plain Old Java Objects ,普通老式 Java 对象)为数据库中的记录。
MyBatis 的优点有:
1 )代替 JDBC 完成 CRUD ,效率高
2 )上手容易,配置灵活
3 )是目前公司主流的 ORM (对象关系映射)框架
这里我们使用Maven 构建项目,
首先需要导入MyBatis 和 MySQL 驱动的依赖
然后再添加配置文件,MyBat is 的配置文件分为两种:
1 、 MyBatis 框架的总体配置文件
2 、 MyBatis 数据库映射文件
我们可以在项目的resources 目录中添加配置文件: mybatis-config.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
4. <configuration>
5. <!--environments 代表配置环境集合,此标签中可以有多个 environment ,
6. default 属性是选择其中一个环境作为默认的配置环境 -->
7. <environments default="develop">
8. <environment id="develop">
9. <!-- 这里配置事务管理器为 JDBC 类型 -->
10. <transactionManager type="JDBC"/>
11. <!-- 这里配置数据源, POOLED 代表连接池类型的数据源 -->
12. <dataSource type="POOLED">
13. <!-- 这里是常用的 4 个数据库配置:驱动、 URL 、账号、密码 -->
14. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
15. <property name="url" value="jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>
16. <property name="username" value="root"/>
17. <property name="password" value="123456"/>
18. </dataSource>
19. </environment>
20. </environments>
21. <!-- 这里是配置数据库映射文件的路径,如果有映射文件就配置到这里 -->
22. <mappers>
23. <mapper resource="mappers/userMapper.xml"/>
24. </mappers>
25. </configuration>
MyBatis 能实现通过 Java 对象来操作数据库,那么如何通过 Java 对象的操作来查询和修改数据库的表呢? MyBatis 通过映射文件来配置数据的 SQL 操作,将 Java 对象的方法映射为具体的 SQL 语句。
这里我们先编写一个UserDAO 接口
26. package com.qianfeng.mybatis.dao;
27. public interface UserDAO
28. {
29. List<User> selectAll();
30. void insert(User user);
31. }
接下来我们来配置映射文件实现User 表的查询和插入操作:
在resources 下创建 mappers 目录,然后创建映射文件: userMapper.xml
32. <?xml version="1.0" encoding="UTF-8"?>
33. <!DOCTYPE mapper
34. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
35. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
36. <!-- namespace 配置对应的 Java 接口 -->
37. <mapper namespace="com.qianfeng.mybatis.dao.UserDAO">
38. ...
39. </mapper>
mapper 中可以配置四种标签:
1 ) <insert> 配置 insert 语句
2 ) <update> 配置 update 语句
3 ) <delete> 配置 delete 语句
4 ) <select> 配置 select 语句
这四种标签的常用属性有:
1) id 对应DAO 接口中的方法名
2 ) parameterType 对应方法的参数类型
3 ) returnType
对应方法的返回值类型,如:User (表的字段名和类的属性名一样)
4) returnMap
对应方法的返回值类型映射,用于表的字段名和类的属性名不一样的情况,实现字段名和属性的映射关系
这里是insert 配置示例
40. <insert id="insert" parameterType="com.qianfeng.mybatis.entity.User">
41. insert into tb_user(u_name,u_password,u_realname,u_gender,u_age,u_img)
42. values(#{name},#{password},#{realname},#{gender},#{age},#{img})
43. </insert>
其中#{...} 中包含的是 User 对象的属性名称
select 配置示例
44. <resultMap id="userMap" type="com.qianfeng.mybatis.entity.User">
45. <id property="id" column="u_id"></id>
46. <result property="name" column="u_name"></result>
47. <result property="password" column="u_password"></result>
48. <result property="realname" column="u_realname"></result>
49. <result property="gender" column="u_gender"></result>
50. <result property="age" column="u_age"></result>
51. <result property="img" column="u_img"></result>
52. </resultMap>
53. <select id="selectAll" resultMap="userMap">
54. select * from tb_user
55. </select>
returnMap 配置的查询语句返回的对象与数据库表的映射, id 是映射名, type 是对应的 Java 类型
其中子标签id 是配置表的主键,属性 id 是 Java 类的属性名, column 是表的字段名,还有 javaType 和 jdbcType 属性可以配置 Java 的类型和 Jdbc 数据类型,这两个这里可以省略。
result 是配置除主键外的一般列
主要步骤:
56. 1 )读取配置文件,创建 SqlSessionFactory
57. SqlSessionFactory factory =
58. new SqlSessionFactoryBuilder().build(
59. Resources.getResourceAsStream("mybatis-config.xml"));
60. 2 )打开数据库会话 Session
61. SqlSession sqlSession = factory.openSession();
62. 3 )获得 DAO 接口的代理对象
63. UserDAO mapper = sqlSession.getMapper(UserDAO.class);
64. 4 )执行 CRUD
65. mapper.insert(...);
66. 5) 提交事务
67. sqlSession.commit();
68. 6) 关闭会话
69. sqlSession.close();
本章我们学习了MyBatis的基本配置,以及映射文件的写法,也掌握了MyBatis的基本操作方法,MyBatis还有很多强大的特性,我们会在后面学习到。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2655757/ ,如需转载,请注明出处,否则将追究法律责任。