1. 程式人生 > >Idea下使用maven搭建SSM(二):MyBatis

Idea下使用maven搭建SSM(二):MyBatis

             開發Web應用,資料的儲存和處理往往離不開資料庫和SQL語句。在使用Java開發的Web應用中,自然也少不了連線資料庫的步驟。在底層連線資料庫的時候,一般優勝JDBC技術,也就是Java的一種提供資料庫連線和操作SQL的底層API。但是網際網路技術正在飛速發展,使用原始JDBC已經滿足不了專案的開發需求了,這就使得Hibernate,MyBatis(iBatis),JPA,JDO等一些優秀的ORM框架誕生,它們不公結合了原生JDBC的功能,還使開發簡捷化,規範化。

        前一章我講了使用maven在idea下搭建SpringMVC,下面接著講使用maven在idea下搭建MyBatis。

首先在mysql中建立一個名為test的資料庫,然後在資料庫中建立表“userinfo”:

1,開啟之前專案,pom.xm中加入MyBatis的引用:

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.12</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.20</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.0</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.41</version>
</dependency>
<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>

2,在Java資料夾下建立包"cn.com.mybatis.pojo",在包下建立java類"UserInfo":

package cn.com.mybatis.pojo;

import java.io.Serializable;

public class UserInfo implements Serializable {
    private int id;

    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;
    }

    private String userName;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private String password;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2,在"resource"資料夾下新建一個"mybatis"資料夾,

編寫SQL對映檔案:

在mybatis資料夾加新建一個mapper資料夾,並在mapper下建立名為userinfo的xml檔案,編輯如下:

<?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="test">
    <select id="findById" parameterType="int" resultType="cn.com.mybatis.pojo.UserInfo">
        SELECT * FROM userinfo WHERE id=#{id}
    </select>
</mapper>

在"mybatis"資料夾下新建名為"SqlMapConfig"的xml檔案,並編輯:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTDConfig 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="drever" value="org.gjt.mm.mysql.Driver"></property>
                <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"></property>
                <property name="username" value="root"></property>
                <property name="password" value="123456"></property>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mybatis/mapper/userinfo.xml"></mapper>
    </mappers>
</configuration>

3,在Java資料夾下建立包"cn.com.mybatis.datasource",在包下建立並編寫資料庫互動類(DataConnection):

package cn.com.mybatis.datasource;

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 java.io.IOException;
import java.io.InputStream;

public class DataConnection {
    private String resource="mybatis/SqlMapConfig.xml";
    private SqlSessionFactory sqlSessionFactory;
    private SqlSession sqlSession;

    public SqlSession getSqlSession() throws IOException{
        InputStream inputStream= Resources.getResourceAsStream(resource);
        sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        sqlSession=sqlSessionFactory.openSession();
        return sqlSession;
    }
}

在Java資料夾下建立包"cn.com.mybatis.dao",在包下建立並編寫資料庫訪問類(UserInfoDAO):

package cn.com.mybatis.dao;

import cn.com.mybatis.datasource.DataConnection;
import cn.com.mybatis.pojo.UserInfo;
import org.apache.ibatis.session.SqlSession;

import java.io.IOException;

public class UserInfoDAO {
    public DataConnection dataConn = new DataConnection();

    public UserInfo GetUserById() throws IOException{
        SqlSession sqlSession=dataConn.getSqlSession();
        UserInfo user = sqlSession.selectOne("test.findById",1);
        sqlSession.close();
        return user;
    }
}

最後,在表現層顯示資料:

修改src/main/webapp/Java/cn.com.controller/Home

package cn.com.controller;

import cn.com.mybatis.dao.UserInfoDAO;
import cn.com.mybatis.pojo.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.io.IOException;

@Controller
@RequestMapping("/Home")
public class Home {
    @RequestMapping("/Index")
    public ModelAndView Index() throws IOException {
        ModelAndView view = new ModelAndView();
        UserInfoDAO userInfoDTO=new UserInfoDAO();
        UserInfo user = userInfoDTO.GetUserById();
        view.addObject("userInfo",user);
        view.setViewName("Index");
        return view;
    }
}

修改Index.JSP檔案

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018-12-07
  Time: 16:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h2>Index</h2>
    <ul>
        <li>${userInfo.id}</li>
        <li>${userInfo.userName}</li>
        <li>${userInfo.age}</li>
    </ul>
</body>
</html>

大功告成!

執行Tomcat

目錄結構:

資源下載地址:https://download.csdn.net/download/wkjiteye/10838188