MyBatis学习(一)(mybatis学习总结)

  本篇文章为你整理了MyBatis学习(一)(mybatis学习总结)的详细内容,包含有mybatis快速入门 mybatis学习总结 mybatis怎么学 mybatis详细教程 MyBatis学习(一),希望能帮助你了解 MyBatis学习(一)。

  一、什么是MyBatis

    根据官网介绍:

  MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射;
 

  MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作;
 

  MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  二、JDBC编程分析

    首先按照以往使用JDBC的方式来访问数据库:

  JDBC实现数据库操作

  

 public static void main(String[] args) {

 

   Connection connection = null;

   PreparedStatement preparedStatement = null;

   ResultSet resultSet = null;

   try {

   //1.加载数据库驱动

   Class.forName("com.mysql.jdbc.Driver");

   //2.获取数据库连接

   DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8",

   "root", "root");

   //3.定义sql语句

   String sql = "select * from user where username = ?";

   //4.获取预处理对象

   preparedStatement = connection.prepareStatement(sql);

   //5.设置参数

   preparedStatement.setString(1, "王五");

   //6.查询数据库

   resultSet = preparedStatement.executeQuery();

   //7.遍历查询的结果集

   while (resultSet.next()) {

   System.out.println(resultSet.getString("id") + "--" +

   resultSet.getString("username"));

   } catch (Exception e) {

   e.printStackTrace();

   } finally {

   //8.释放资源

   if (resultSet != null) {

   try {

   resultSet.close();

   } catch (SQLException e) {

   e.printStackTrace();

   if (preparedStatement != null) {

   try {

   preparedStatement.close();

   } catch (SQLException e) {

   e.printStackTrace();

   if (connection != null) {

   try {

   connection.close();

   } catch (SQLException e) {

   e.printStackTrace();

  

 

    虽然上述未经封装的JDBC代码可实现查询数据库记录的操作,但是分析上述代码可发现以下问题:

  数据库连接创建、释放会很频繁,从而导致系统资源的浪费;

  SQL语句存在于代码中,而实际应用的过程中SQL语句可能时常发生变化,从而导致需要经常改动Java代码,造成代码不易维护;

  对结果集的解析存在硬编码(查询列名),SQL变化会导致解析代码变化,系统不易维护;

    针对上述存在的问题,可采用下述办法进行解决:

  可通过数据库连接池来解决数据库连接频繁创建、释放问题;

  将SQL语句独立于代码存放用来解决SQL语句在代码中硬编码的问题;

  将数据库记录封装成POJO对象进行解析来解决结果集的解析存在硬编码问题;

    而本次学习的MyBatis即可实现上述操作。

  三、MyBatis快速入门

  创建Maven工程,导入相关依赖

  
public String toString() {

   return "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", " +

   "sex=" + sex + ", address=" + address + "]";

  

 

 

  


 ?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.dcyl.dao.UserDao"

   select id="findAll" resultType="com.dcyl.domain.User"

   select * from user

   /select

   /mapper

  

 

  
SqlMapConfig.xml

  

 ?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

   !-- 配置mybatis的环境 --

   environments default="mysql"

   !-- 配置mysql的环境 --

   environment id="mysql"

   !-- 配置事务的类型 --

   transactionManager type="JDBC" /transactionManager

   !-- 配置连接数据库的信息:用的是数据源(连接池) --

   dataSource type="POOLED"

   property name="driver" value="com.mysql.jdbc.Driver"/

   property name="url" value="jdbc:mysql://localhost:3306/mybatis"/

   property name="username" value="root"/

   property name="password" value="root"/

   /dataSource

   /environment

   /environments

   !-- 告知mybatis映射配置的位置 --

   mappers

   mapper resource="com/dcyl/dao/UserDao.xml"/

   /mappers

   /configuration

  

 

  


public class MybatisTest {

 

   public static void main(String[] args) throws Exception {

   //1.读取配置文件

   InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

   //2.创建SqlSessionFactory的构建者对象

   SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

   //3.使用构建者创建工厂对象SqlSessionFactory

   SqlSessionFactory factory = builder.build(in);

   //4.使用SqlSessionFactory生产SqlSession对象

   SqlSession session = factory.openSession();

   //5.使用SqlSession创建dao接口的代理对象

   UserDao userDao = session.getMapper(UserDao.class);

   //6.使用代理对象执行查询所有方法

   List User users = userDao.findAll();

   for (User user : users) {

   System.out.println(user);

   //7.释放资源

   session.close();

   in.close();

  

 

    至此关于MyBatis的入门案例已经完成,接下来就是关于MyBatis的具体细节的讲解。

  以上就是MyBatis学习(一)(mybatis学习总结)的详细内容,想要了解更多 MyBatis学习(一)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: