mybatis项目构建过程附源码下载

集成环境:
IntelliJ IDEA 2016.3.2
JRE: 1.8.0_112-release-408-b6 x86_64

本地安装mysql,创建数据库user.db,新建表名为Person
建表语句如下:

CREATE TABLE `Person` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `userName` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `mobilePhone` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10008 DEFAULT CHARSET=utf8;

完成以上准备即可进入下面的构建过程,进行测试学习。
1、新建一个webapp项目即可。具体构建webapp过程 参考地址:
点击链接

2、在WEB-INF下新建lib文件夹,添加数据库连接的两个jar包,导入到內库mybatis-3.2.0-SNAPSHOT.jar和mysql-connector-java-5.1.22-bin.jar

3、项目的目录结构如下:
mybatis项目构建过程附源码下载_第1张图片

4、根据目录结构构建相关配置文件和java类包
首先,在model包下新建Person.java类文件。Person.java文件内容如下:

package model;

public class Person {

    private int id;
    private String userName ;
    private int age ;
    private String mobilePhone ;
    public  Person(){}
    public Person(int id,String userName, int age, String mobilePhone) {
        this.id = id;
        this.userName = userName;
        this.age = age;
        this.mobilePhone = mobilePhone;
    }

    public String getUserName() {
        return userName;
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getAge() {
        return age;
    }

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

    public String getMobilePhone() {
        return mobilePhone;
    }

    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    @Override
    public String toString() {
        return "Person{" +
                "userName='" + userName + '\'' +
                ", age=" + age +
                ", mobilePhone='" + mobilePhone + '\'' +
                '}';
    }
}

然后,构建MybatisUtil.java工具包,用于获取连接数据的SqlSession对象,关于其原理和源码分析网上有详细的资料供查阅,我这里主要讲解一下构建过程。
代码如下:

package utils;

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.Reader;

/**
 * Created by roly on 2017/6/23.
 */
public class MybatisUtil {
    private final  static SqlSessionFactory sqlSessionFactory;

    static {
        String resource="mybatis-config.xml";
        Reader reader =null;
        try {
            reader = Resources.getResourceAsReader(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    }

    /**
     * 获取SqlSessionFactory
     * @return SqlSessionFactory
     */
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }

    /**
     * 获取SqlSession
     * @return SqlSession
     */
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
    /**
     * 关闭SqlSession
     */
    public  static void closeSession(SqlSession sqlSession){
        if (sqlSession!=null)
            sqlSession.close();
    }
}

5、配置文件。
在resources文件夹目录下新建连接数据库的配置文件mybatis-config.xml和config.properties。这里要注意在mybatis-config.xml的配置文件总不要忘记映射文件的配置
mybatis-config.xml文件的内容



<configuration>
    <properties resource="config.properties"/>
    <typeAliases>
        <typeAlias type="model.Person" alias="Person"/>
    typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            dataSource>
        environment>
    environments>
    <mappers>
        <mapper resource="mapper/Person.xml"/>
    mappers>
configuration>

config.properties文件内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user
username=root
password=

6、在resouse/mapper下新建映射文件Person.xml。主要映射一些mysql语句。注意select标签一定要带映射类的结果类型resultType=”model.Person”,具体代码如下:



<mapper namespace="com">
    <insert id="insertPerson" parameterType="Person" >
        INSERT INTO PERSON(ID,USERNAME,AGE,MOBILEPHONE)VALUES (#{id},#{userName},#{age},#{mobilePhone})
    insert>

    <select id="queryById" parameterType="int" resultType="model.Person">
        SELECT * FROM PERSON WHERE ID=#{id}
    select>

    <update id="updatePerson" parameterType="Person" >
        UPDATE PERSON SET USERNAME=#{userName},AGE=#{age},MOBILEPHONE=#{mobilePhone} WHERE mobilePhone=#{mobilePhone}
    update>

    <delete id="deletePerson" parameterType="String">
        DELETE FROM PERSON  WHERE mobilePhone=#{mobilePhone}
    delete>

    <insert id="insertRoly" parameterType="Person">
        INSERT INTO Person(username,age,mobilephone) VALUES (#{userName},#{age},#{mobilePhone})
    insert>

    <select id="selectRoly" parameterType="String"  resultType="model.Person">
        SELECT * FROM Person WHERE mobilephone=#{mobilePhone}

    select>
mapper>

7、构建测试类UserTest.java
代码如下:

package com.user.test;

import model.Person;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import utils.MybatisUtil;

import java.util.List;

public class UserTest {

    SqlSession sqlSession ;
    @Test
    public void insertPerson(){
        sqlSession = MybatisUtil.getSqlSession();
//        int id = 10000;
        String userName = "test";
        int age = 18;
        String mobilePhone = "11111111";
        Person person = new Person();
//        person.setId(id);
        person.setAge(age);
        person.setUserName(userName);
        person.setMobilePhone(mobilePhone);
        try{
            sqlSession.insert("insertPerson",person);
            sqlSession.commit();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSession(sqlSession);
        }

    }

    @Test
    public void queryById(){
        sqlSession = MybatisUtil.getSqlSession();
        int id = 10002;
        try{
            Person person = sqlSession.selectOne("queryById",id);
            sqlSession.commit();
            if(person == null){
                System.out.println("Person_null");
            }else{
                System.out.println(person.getUserName());
            }


        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSession(sqlSession);
        }

    }


    @Test
    public void insertData() {
        sqlSession = MybatisUtil.getSqlSession();
        String username = "test";
        int age = 19;
        String mobilephone = "222222222";
        Person person = new Person();
        person.setUserName(username);
        person.setAge(age);
        person.setMobilePhone(mobilephone);

        try {

            sqlSession.insert("insertRoly",person);
            sqlSession.commit();

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSession(sqlSession);
        }
    }
    @Test
    public void selectData() {
        sqlSession = MybatisUtil.getSqlSession();
        try {

            List persons = sqlSession.selectList("selectRoly","222222222");
            sqlSession.commit();
            if (persons!=null && persons.size()!=0) {
                for (Person parms:persons) {
                    System.out.println(parms.toString());

                }
            }else {
                System.out.println("person is null");
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSession(sqlSession);
        }
    }


    @Test
    public void updateData() {
        sqlSession = MybatisUtil.getSqlSession();
        String userName = "test";
        int age = 18;
        String mobilePhone = "222222222";
        Person person = new Person();
//        person.setId(id);
        person.setAge(age);
        person.setUserName(userName);
        person.setMobilePhone(mobilePhone);
        try {

            sqlSession.update("updatePerson",person);
            sqlSession.commit();
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSession(sqlSession);
        }
    }

    @Test
    public void deleteData() {
        sqlSession = MybatisUtil.getSqlSession();
        try {
            String mobilePhone = "11111111";
            sqlSession.delete("deletePerson",mobilePhone);
            sqlSession.commit();
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSession(sqlSession);
        }
    }
}

好了,整个mybatis项目的增删改查映射操作完成。这个只是一个简单的构建过程。附上源码下载地址
点击下载

你可能感兴趣的:(mybatis)