码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-04-21 16:53:48      阅读:531      评论:0      收藏:0      [点我收藏+]

标签:archive   nec   生效   version   try   auth   mit   void   debug   

参考博客: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这一行,否则不生效。

 

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

标签:archive   nec   生效   version   try   auth   mit   void   debug   

原文地址:http://www.cnblogs.com/wukong0214/p/6744042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!