Spring+Mybatis開發示例

寫下來留個紀念(^~^)大神可飄過

1,實現Spring+Mybatis+數據源的配置

2,實現枚舉到數據庫TINYINT類型的轉換

3,slf4j日誌配置方法

4,數據庫增+刪+改+查操作

5,實現效果界面+項目配置目錄樹

     界面效果

 

6,關鍵代碼:

a)控制器

 

package com.fresh.lyh.simple.controller;

import com.fresh.lyh.simple.model.Simple;
import com.fresh.lyh.simple.model.cenum.SimpleStatusEnum;
import com.fresh.lyh.simple.service.SimpleService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 作者 yaohua.liu
 * 時間 2014-06-12 20:20
 * 包名 com.qunar.qfound.controller
 * 說明 ...
 */
@Controller
@RequestMapping("/")
public class SimpleController {
    @Resource
    SimpleService simpleService;

    Logger logger = LoggerFactory.getLogger(SimpleController.class);
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

    @RequestMapping("")
    public Object go(Model model) {
        logger.info("======================================>go.do");
        return forwardToIndex(model);
    }

    @RequestMapping("regedit.do")
    public Object regedit(@RequestParam(value = "name", required = true) String name,
                          @RequestParam(value = "passwd", required = true) String passwd,
                          @RequestParam(value = "birth", required = false) String birth,
                          @RequestParam(value = "status", required = false) int status,
                          Model model) {
        logger.info("===============================regedit.do: " + name + ":" + passwd + ":" + birth);

        Simple simple = new Simple(name, passwd);
        simple.setCreateTime(new Date());
        try {
            simple.setBirth(sdf.parse(birth));
            simple.setStatus(SimpleStatusEnum.codeOf(status));
        } catch (ParseException e) {
            logger.info("===============解析生日日期失敗");
        }
        if (simpleService == null)
            logger.info("simpleService注入失敗!!");

        simpleService.regedit(simple);

        return forwardToIndex(model);
    }

    @RequestMapping("update.do")
    public Object update(@RequestParam(value = "name", required = true) String name, @RequestParam(value = "id", required = true) int id, Model model) {
        logger.info("=============================== update.do:" + name + ":" + id);

        Simple simple = new Simple();
        simple.setName(name);
        simple.setId(id);
        simpleService.update(simple);

        return forwardToIndex(model);
    }

    @RequestMapping("query.do")
    public Object query(@RequestParam(value = "name", required = false) String name, Model model) {
        logger.info("===============================query.do: " + name);

        Simple simple = new Simple();
        simple.setName(name);
        List<Simple> simpleList = simpleService.query(simple);
        model.addAttribute("simples", simpleList);
        return "simple";
    }

    @RequestMapping("delete.do")
    public Object delete(@RequestParam(value = "id", required = true) int id, Model model) {
        logger.info("===============================delete.do: " + id);

        Simple simple = new Simple();
        simple.setId(id);
        simpleService.delete(simple);
        return forwardToIndex(model);
    }
   
    private String forwardToIndex(Model model) {
        List<Simple> simpleList = null;
        simpleList = simpleService.query();
        model.addAttribute("simples", simpleList);
        return "simple";
    }
}

b)Mybatis配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!--
            自動把create_time 轉換成 createTime
            不需要在添加 as 語句,如:
            select create_time as createTime from your_table_name;//以前使用這樣的語句
            使用 select create_time from your_table_name;//現在使用這樣的語句
        -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!--
        類的別名
        以前使用:<typeAlias type="com.qunar.qfound.model.Simple" alias="Simple"/>
        現在使用:<package name="com.qunar.qfound.model"/>可完成model下面使用實體類的掃描
        後面方式默認把類的別名命名爲類名且第一個字母爲小寫,也支持直接使用類名,如:
        在mapper/simple.xml中可以使用simple也可以使用Simple
    -->
    <typeAliases>
        <package name="com.fresh.lyh.simple.model"/>
        <package name="com.fresh.lyh.simple.model.cenum"/>
    </typeAliases>

    <typeHandlers>
        <typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"  javaType="SimpleStatusEnum" />
    </typeHandlers>
</configuration>


c)Mybatis映射mapper文件

 

<?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.fresh.lyh.simple.dao.SimpleDAO">

    <resultMap id="simpleResult" type="Simple">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="birth" property="birth"/>
        <result column="create_time" property="createTime"/>
        <result column="passwd" property="passwd"/>
        <result column="status" property="status" javaType="SimpleStatusEnum" jdbcType="TINYINT"/>
    </resultMap>

    <insert
            id="regedit"
            parameterType="Simple"
            useGeneratedKeys="true"
            keyProperty="id">
        <![CDATA[
            insert into simple(
             name,
             passwd,
             birth,
             status,
             create_time
            ) values (
                #{name},
                #{passwd},
                #{birth},
                #{status,javaType=SimpleStatusEnum,jdbcType=TINYINT},
                #{createTime}
           )
        ]]>
    </insert>

    <update id="update"
            parameterType="Simple">
        <![CDATA[

            update simple set
              name = #{name}
            where id=#{id}
        ]]>
    </update>

    <select
            id="query"
            parameterType="Simple"
            resultMap="simpleResult">
        <![CDATA[
          select
              id,
              name,
              passwd,
              birth,
              status,
              create_time
          from simple
        ]]>
        <where>
            <if test="name!=null and name!=''">
                and name=#{name}
            </if>
        </where>
    </select>

    <delete
            id="delete"
            parameterType="java.util.HashMap">
        <![CDATA[
          delete from simple
        ]]>
        <where>
            and id=#{id}
        </where>
    </delete>
</mapper>

 

d)枚舉類文件

package com.fresh.lyh.simple.model.cenum;

/**
 * 作者 yaohua.liu
 * 時間 2014-07-13 20:21
 * 包名 com.qunar.qfound.cenum
 * 說明 ...
 */

public enum SimpleStatusEnum {

    normal(0, "正常"), delete(1, "已刪除");
    private Integer code;
    private String role;

    SimpleStatusEnum(Integer code, String role) {
        this.role = role;
        this.code = code;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public static SimpleStatusEnum codeOf(Integer code) {
        for (SimpleStatusEnum status : values()) {
            if (status.code == code)
                return status;
        }
        throw new IllegalArgumentException("Invalid role code: " + code);
    }
}

e)dao配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

    <!-- =================================================== 數據源 -->
    <bean id="abstractPoolDatatSource" abstract="true" class="org.apache.tomcat.jdbc.pool.DataSource"
          destroy-method="close">
        <property name="fairQueue" value="false"/>
        <property name="initialSize" value="1"/>
        <property name="maxActive" value="50"/>
        <property name="maxIdle" value="20"/>
        <property name="maxWait" value="5000"/>
        <property name="minIdle" value="1"/>
        <property name="removeAbandoned" value="true"/>
        <property name="removeAbandonedTimeout" value="30"/>
        <property name="testOnBorrow" value="true"/>
        <property name="validationQuery" value="select 1"/>
        <property name="validationInterval" value="500000"/>
    </bean>

    <bean id="dataSource" parent="abstractPoolDatatSource">
        <property name="driverClassName" value="${mysql.jdbc.driver}"/>
        <property name="url" value="${mysql.jdbc.url}"/>
        <property name="username" value="${mysql.jdbc.username}"/>
        <property name="password" value="${mysql.jdbc.password}"/>
    </bean>

    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.fresh.lyh.simple.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
    </bean>
</beans>


7,全部代碼免費下載地址http://download.csdn.net/detail/love254443233/7643049

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章