🏠 个人主页:csdn春和
📚 推荐专栏:更多专栏尽在主页!
Scala专栏(spark必学语言 已完结)
JavaWeb专栏(从入门到实战超详细!!!)
SSM专栏 (更新中…)
📖 本期文章:Mybatis(1)—— 快速入门使用持久层框架Mybatis
如果对您有帮助还请三连支持,定会一 一回访!🙋🏻♂️
📌本文目录
一、Mybatis简介
1.1、原始jdbc操作
使用·原是jdbc的方式查询数据
public class SelectData {
public static void main(String[] args) {
try {
// 1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、获得连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/study", "root", "123456");
// 3、获得satement
Statement statement = connection.createStatement();
// 4、定义sql
String sql = "select * from user";
// 5、之心sql
ResultSet resultSet = statement.executeQuery(sql);
// 6、遍历结果集
while (resultSet.next()){
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
String passwd = resultSet.getString(3);
System.out.println(id + "---" + name +"---" + passwd);
}
// 7、释放资源
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
1.2、原始jdbc操作的缺点
原始jdbc开发存在的问题如下:
①数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能
②sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。
③查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置
应对上述问题给出的解决方案:
①
使用数据库连接池初始化连接资源
②
将sql语句抽取到xml配置文件中
③
使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射
1.3、Mybatis是什么?
mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身
,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。
最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。
Mybatis官网地址:http://www.mybatis.org/mybatis-3/
二、Mybatis的快速入门
开发步骤:
①添加MyBatis的坐标
②创建user数据表
③编写User实体类
④编写映射文件UserMapper.xml
⑤编写核心文件SqlMapConfig.xml
⑥编写测试类
1、环境准备
创建一个新的module。导入相应的依赖坐标
<dependencies>
<!-- mysql连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<!-- mybatis坐标 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- junit单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- log4j日志打印 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
2、创建一张表
3、创建实体类
public class User {
private int id; // 用户id
private String username; // 用户名
private String password; // 密码
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
4、编写UserMapper映射文件
<?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="userMapper">
<select id="findAll" resultType="com.zhou.mybatis.domain.User">
select * from user
</select>
</mapper>
5、编写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>
<!-- 配置数据源的环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/study"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="com/zhou/mybatis/mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
6、编写测试代码
public class MybatisTest {
@Test
public void test1() throws IOException {
// 1、加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
// 2、获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
// 3、获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4、执行操作 参数就是 namespace + id
List<User> userList = sqlSession.selectList("userMapper.findAll");
// 5、打印数据
System.out.println(userList);
// 6、释放资源
sqlSession.close();
}
}
7、测试
三、mybatis映射文件概述
3.1、mybatis插入数据操作
1、编写UserMapper映射文件
<mapper namespace="userMapper">
<!-- 查询操作 -->
<