JAVA应用程序单独集成Mybatis使用Demo

参考博客:http://www.cnblogs.com/magialmoon/archive/2013/10/30/3397828.html

整体结构

POM依赖

    <dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.2.3</version>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.26</version>

</dependency>

数据准备

CREATE TABLE `t_migu_top_data` (

`music_id` int(11) DEFAULT NULL,

`music_name` varchar(100) DEFAULT NULL,

`music_author` varchar(100) DEFAULT NULL,

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

配置文件

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>    

    <settings>   

        <!-- changes from the defaults for testing -->   

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

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

        <setting name="defaultExecutorType" value="REUSE" />   

    </settings>  

    <typeAliases>    

        <typeAlias alias="TopData" type="com.cmcc.top.mysql.entity.TopData"></typeAlias>    

    </typeAliases>    

    <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://172.23.28.57:3306/top?useUnicode=true&amp;characterEncoding=UTF-8" />    

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

                <property name="password" value="*****" />    

            </dataSource>    

        </environment>    

    </environments>    

    <mappers>    

        <mapper resource="sqlMap/TopDataMapper.xml"/>    

    </mappers>    

</configuration>   

TopDataMapper.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="com.cmcc.top.mysql.dao.TopDataDao">

<sql id="tablename">t_migu_top_data</sql>

<sql id="Base_Column_List">

music_id,

music_name,

music_author

</sql>

<resultMap id="BaseResultMap" type="com.cmcc.top.mysql.entity.TopData">

<result column="music_id" property="musicId" jdbcType="VARCHAR" />

<result column="music_name" property="musicName" jdbcType="VARCHAR" />

<result column="music_author" property="musicAuthor" jdbcType="VARCHAR" />

</resultMap>

<insert id="createTopData" useGeneratedKeys="true" keyProperty="id" parameterType="com.cmcc.top.mysql.entity.TopData" >

 insert into <include refid="tablename" />

(

        music_id,

        music_name,

        music_author

)

values

(

 #{musicId},

 #{musicName},

 #{musicAuthor}
)

</insert>

<insert id="createTopDataByBatch" parameterType="java.util.List" >

insert into <include refid="tablename" />

(

        music_id,

        music_name,

        music_author
)

values

<foreach collection="list" item="item" index="index" separator="," >

(

         #{item.musicId},

         #{item.musicName},

         #{item.musicAuthor}
)

</foreach>

</insert>

<select id="getTopDataList" parameterType="java.util.Map" resultMap="BaseResultMap" >

select  <include refid="Base_Column_List" />

from 

<include refid="tablename" />

<where>

<if test="musicId !=null " >

and music_id = #{musicId}

</if>

<if test="musicName != null">

and music_name like ‘%${musicName}%‘

</if>

<if test="musicAuthor != null">

and music_author like ‘%${musicAuthor}%‘

</if>

<if test="musicLanguage != null">

and music_language = #{musicLanguage}

</if>

<if test="musicStyle != null">

and music_style = #{musicStyle}

</if>

<if test="startDate != null">

and create_time >= ‘${startDate}‘

</if>

<if test="endDate != null">

and ‘${endDate}‘ >= create_time

</if>

</where>

</select>

<update id="updateTopData" parameterType="com.cmcc.top.mysql.entity.TopData" >

 update  <include refid="tablename" />

<set>

            <if test="musicStatus != null">

                music_status = #{musicStatus},

            </if>

            <if test="customerFilePath != null">

                customer_file_path = #{customerFilePath},

            </if>

</set>

where  music_id = #{musicId}

</update>

</mapper>

实体对象

public class TopData {

    private String musicId;
    private String musicName;
    private String musicAuthor;
...
}

接口Dao

public interface TopDataDao {

    public void createTopData(TopData topData);

    public void createTopDataByBatch(List<TopData> topDataList);

    public void updateTopData(TopData topData);

    //public void updateTopDataByBatch(List<TopData> topDataList);

    public List<TopData> getTopDataList(Map<String, Object> queryMap);

}

manager

public class TopDataManager {

    private static SqlSession sqlSession;

    private static TopDataDao topDataDao;

    public static void initialConnection() {    

        try{    

            String resource = "mybatis-config.xml";    

            Reader reader = Resources.getResourceAsReader(resource);    

            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);    

            sqlSession = ssf.openSession();  

            topDataDao = sqlSession.getMapper(TopDataDao.class);

        } catch (Exception e) {    

            e.printStackTrace();    

        } 

    }    

    public static void destroyConnection() {

        sqlSession.close();

    }

    public static void createTopData(TopData topData) {

        topDataDao.createTopData(topData); 

        sqlSession.commit();

    }

    public static void createTopDataByBatch(List<TopData> topDataList) {

        topDataDao.createTopDataByBatch(topDataList);

        sqlSession.commit();

    }

    public static void updateTopData(TopData topData) {

        topDataDao.updateTopData(topData);

        sqlSession.commit();

    }

    public static List<TopData> getTopDataList(Map<String, Object> queryMap) {

        return topDataDao.getTopDataList(queryMap);

    }

}

测试

main 方法访问即可

注意事项

1、mybatis会用log4j记录日志,但是开启debug模式貌似对性能影响非常厉害。

2、mybatis的查询缓存对性能的影响非常大,启用和不启用差距非常大

注意:mapper文件中一定要加上cache这一行,否则不生效。

时间: 2024-11-10 14:13:25

JAVA应用程序单独集成Mybatis使用Demo的相关文章

Java接口自动化测试之集成MyBatis和MySQL (五)

pom.xml新增dependency 1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis</artifactId> 4 <version>3.4.4</version> 5 </dependency> 6 <dependency> 7 <groupId>mysql</groupId> 8

由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”

在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Mybatis),对于它,个人比较喜欢的是: 使用简单.方便: 支持的XML动态SQL的编写,方便浏览.修改,同时降低SQL与应用程序之间的耦合. 不喜欢的是: 出现错误时,调试不太方便 本文主要介绍Mybatis的搭建,是学习Mybatis过程后整理的札记,其中包括“单独搭建Mybaits”和常用的“M

Spring学习(五)——集成MyBatis

本篇我们将在上一篇http://www.cnblogs.com/wenjingu/p/3829209.html的Demo程序的基础上将 MyBatis 代码无缝地整合到 Spring 中. 数据库仍然采用前一篇文章中定义的数据库sampledb. 1.修改gradle文件,增加依赖包,代码如下: apply plugin: 'idea' apply plugin: 'java' repositories { mavenCentral() maven { url "http://repo.spri

Java初中级程序员面试题宝典

Java基础部分 &与&&区别? &和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假:但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的. 静态变量和实例变量的区别? 在语法定义上的区别: 静态变

spring-boot学习之集成mybatis

一.关于spring boot 1.spring boot 简而言之就是使spring启动更容易,它的座右铭是"just run",大多数spring应用程序仅仅需要很少的配置,使用spring-boot将大大减少编写spring相关的代码量和xml配置文件 2.通常情况下spring-boot会在classpath下寻找application.properties或者application.yml配置文件,绝大多数的应用都会在此配置文件里配置 二 spring boot集成Mybat

springboot集成mybatis

springboot如何配置web项目请参考前一章,在此基础上集成mybatis. 在pom文件中添加mybatis的依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency&

使用 Acegi 保护 Java 应用程序

第 1 部分: 架构概览和安全过滤器 Acegi Security System 是一种功能强大并易于使用的替代性方案,使您不必再为 Java 企业应用程序编写大量的安全代码.虽然它专门针对使用 Spring 框架编写的应用程序,但是任何类型的 Java 应用程序都没有理由不去使用 Acegi.这份共分三部分的系列文章详细介绍了 Acegi,并展示了如何使用它保护简单的企业应用程序以及更复杂的应用程序. 本系列首先介绍企业应用程序中常见的安全问题,并说明 Acegi 如何解决这些问题.您将了解

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

Spring Boot 数据访问集成 MyBatis

对于软件系统而言,持久化数据到数据库是至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架(ORM).在 Java 应用程序中,ORM 框架的本质是简化编程中操作数据库的繁琐性,比如可以根据对象生成 SQL 的 Hibernate ,后面 Hibernate 也实现了JPA 的规范,使用 JPA 的方式只需要几行代码即可实现对数据的访问和操作:MyBatis 的前身是 IBATIS 是一个简化和实现了 Java 数据持久化层的开源框架,可以灵活调试 SQL , MyBat