准备:

导入mybatis,及数据库驱动jar包,下面是maven依赖

<dependency>

<groupId>com.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.3.0</version>

</dependency>

<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc7</artifactId>

<version>10.2</version>

</dependency>

 

创建三层架构包

 

mybatis的简单实现

TUser实体类,属性与数据库中存储的字段名相对应,可以相同也可以不相同,推荐相同

我的数据库表截图:

mybatis的简单实现

 

 

User实体类

package com.mybatis.bean;

 

/**

 * @author TH

 */

public class TUser {

  

    private int id;

   

    private String name;

   

    private String gender;

 

    public TUser() {

    }

 

    public TUser(int id, String name, String gender) {

        this.id = id;

        this.name = name;

        this.gender = gender;

    }

 

    public int getId() {

        return id;

    }

   

    public void setId(int id) {

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

   

    public void setName(String name) {

        this.name = name == null ? null : name.trim();

    }

   

    public String getGender() {

        return gender;

    }

 

    public void setGender(String gender) {

        this.gender = gender == null ? null : gender.trim();

    }

}

 

创建TUserMapper接口和TUserMapper.xml文件,文件名可以不一致,推荐一致.

package com.mybatis.dao;

 

import com.mybatis.bean.TUser;

import java.util.List;

 

public interface TUserMapper {

    //下面是一些普通方法定义,实现数据库的增删改查操作

    int deleteByPrimaryKey(int id);

 

    int insert(TUser record);

   

    TUser selectByPrimaryKey(int id);

   

    List<TUser> selectAll();

 

    int updateByPrimaryKey(TUser record);

}

 

<?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.mybatis.dao.TUserMapper">

  <resultMap id="BaseResultMap" type="com.mybatis.bean.TUser">

    <id column="ID" jdbcType="DECIMAL" property="id" />

    <result column="NAME" jdbcType="VARCHAR" property="name" />

    <result column="GENDER" jdbcType="VARCHAR" property="gender" />

  </resultMap>

<!--  这里的ID属性要与接口的方法名一致 -->

  <delete id="deleteByPrimaryKey" parameterType="int">

    delete from HGH.T_USER

    where ID = #{id,jdbcType=DECIMAL}

  </delete>

 

  <insert id="insert" parameterType="com.mybatis.bean.TUser">

    insert into HGH.T_USER (ID, NAME, GENDER

      )

    values (#{id,jdbcType=DECIMAL}, #{name,jdbcType=VARCHAR}, #{gender,jdbcType=VARCHAR}

      )

  </insert>

  <update id="updateByPrimaryKey" parameterType="com.mybatis.bean.TUser">

    update HGH.T_USER

    set NAME = #{name,jdbcType=VARCHAR},

      GENDER = #{gender,jdbcType=VARCHAR}

    where ID = #{id,jdbcType=DECIMAL}

  </update>

  <select id="selectByPrimaryKey" parameterType="int" resultMap="BaseResultMap">

    select ID, NAME, GENDER

    from HGH.T_USER

    where ID = #{id,jdbcType=DECIMAL}

  </select>

  <select id="selectAll" resultMap="BaseResultMap">

 

    select ID, NAME, GENDER

    from HGH.T_USER

  </select>

</mapper>

 

创建mybatis-config.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>

<!--    引入配置文件-->

    <properties resource="jdbc.properties"/>

    <settings>

        <!-- Globally enables or disables any caches configured in any mapper under this configuration -->

        <setting name="cacheEnabled" value="false"/>

        <!-- Sets the number of seconds the driver will wait for a response from the database -->

        <setting name="defaultStatementTimeout" value="5"/>

        <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->

        <setting name="mapUnderscoreToCamelCase" value="true"/>

        <!-- Allows JDBC support for generated keys. A compatible driver is required.

        This setting forces generated keys to be used if set to true,

         as some drivers deny compatibility but still work -->

        <setting name="useGeneratedKeys" value="true"/>

    </settings>

 

    <!-- Continue editing here -->

<!--    给类起别名-->

    <typeAliases>

        <package name="com.mybatis"/>

    </typeAliases>

<!--    配置数据源

    ${jdbc.driverClassName}使用该表达式获取properties配置文件写好的数据源配置

-->

    <environments default="development">

        <environment id="development">

            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">

                <property name="driver" value="${jdbc.driverClassName}" />

                <property name="url" value="${jdbc.url}" />

                <property name="username" value="${jdbc.username}" />

                <property name="password" value="${jdbc.password}" />

            </dataSource>

        </environment>

    </environments>

 

<!--    注册mapper.xml文件,这里使用的时包注册,就是说注册com.mybatis包下的所有xml文件-->

    <mappers>

        <package name="com.mybatis"/>

    </mappers>

 

</configuration>

properties配置文件:

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver

jdbc.url=jdbc:oracle:thin:@localhost:1521:XE

jdbc.username=hgh

jdbc.password=orcl1234

创建TUserService接口和TUserServiceImpl实现类

package com.mybatis.service;

 

import com.mybatis.bean.TUser;

 

import java.util.List;

 

public interface TUserService {

 

    int deleteByPrimaryKey(int id);

 

    int insert(TUser record);

 

    TUser selectByPrimaryKey(int id);

 

    List<TUser> selectAll();

 

    int updateByPrimaryKey(TUser record);

}

 

package com.mybatis.service.impl;

 

import com.mybatis.MybatisSqlSessionFactory;

import com.mybatis.bean.TUser;

import com.mybatis.dao.TUserMapper;

import com.mybatis.service.TUserService;

import org.apache.ibatis.session.SqlSession;

 

import java.util.List;

 

/**

 * @author TH

 */

public class UserServiceImpl implements TUserService {

    @Override

    public int deleteByPrimaryKey(int id) {

//这里MybatisSqlSessionFactory是自己创建的工厂类

        try(SqlSession session = MybatisSqlSessionFactory.getSqlSessionFactory().openSession()) {

            TUserMapper tUserMapper = session.getMapper(TUserMapper.class);

            int result = tUserMapper.deleteByPrimaryKey(id);

            session.commit();

            return result;

        }

    }

 

    @Override

    public int insert(TUser record) {

        try(SqlSession session = MybatisSqlSessionFactory.getSqlSessionFactory().openSession()) {

            TUserMapper tUserMapper = session.getMapper(TUserMapper.class);

            int result = tUserMapper.insert(record);

            session.commit();

            return result;

        }

    }

 

    @Override

    public TUser selectByPrimaryKey(int id) {

        try(SqlSession session = MybatisSqlSessionFactory.getSqlSessionFactory().openSession()) {

            TUserMapper tUserMapper = session.getMapper(TUserMapper.class);

            TUser result = tUserMapper.selectByPrimaryKey(id);

            return result;

        }

    }

 

    @Override

    public List<TUser> selectAll() {

        try(SqlSession session = MybatisSqlSessionFactory.getSqlSessionFactory().openSession()) {

            TUserMapper tUserMapper = session.getMapper(TUserMapper.class);

            List<TUser> result = tUserMapper.selectAll();

            return result;

        }

    }

 

    @Override

    public int updateByPrimaryKey(TUser record) {

        try(SqlSession session = MybatisSqlSessionFactory.getSqlSessionFactory().openSession()) {

            TUserMapper tUserMapper = session.getMapper(TUserMapper.class);

            int result = tUserMapper.updateByPrimaryKey(record);

            session.commit();

            return result;

        }

    }

}

 

工厂类

package com.mybatis;

 

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

 

import java.io.IOException;

import java.io.InputStream;

 

/**

 * @author TH

 */

public class MybatisSqlSessionFactory {

    private static InputStream is;

    static {

        try {

            is = Resources.getResourceAsStream("mybatis-config.xml");

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

    private MybatisSqlSessionFactory() {

    }

 

    public static SqlSessionFactory getSqlSessionFactory(){

        return Singer.S_INSTANCE;

    }

    private static class Singer{

        private static final SqlSessionFactory S_INSTANCE = new SqlSessionFactoryBuilder().build(MybatisSqlSessionFactory.is);

    }

}

 

  1. 开始测试啦:

package com.mybatis;

 

import com.mybatis.bean.TUser;

 

import com.mybatis.service.impl.UserServiceImpl;

 

public class Test {

    public static void main(String[] args) {

        UserServiceImpl service = new UserServiceImpl();

        service.updateByPrimaryKey(new TUser(2,"mt","female"));

    }

}

//这里就可以成功修改数据库数据了,执行其他操作只需要调用相应的方法即可

如果实现过程中遇到什么问题可评论区留言,会尽快回复.

相关文章: