Spring+mybatis的一個簡單例子

jopen 8年前發布 | 55K 次閱讀 Spring JEE框架

一、eclipse新建java項目取名SpringTest


二、倒入sping,mybatis,jdbc(這里用postgresql)包到構建路徑


三、在psql中建庫、建表的腳本。

CREATE DATABASE mymotif
  WITH OWNER = mymotif
       ENCODING = 'UTF8'
       TABLESPACE = mymotif_ts
       LC_COLLATE = 'zh_CN.UTF-8'
       LC_CTYPE = 'zh_CN.UTF-8'
       CONNECTION LIMIT = -1;
       
CREATE TABLE student
(
  sno character(7) NOT NULL,
  sname character(8) NOT NULL,
  sex character(2) NOT NULL,
  bdate date,
  dir character(16),
  CONSTRAINT student_pkey PRIMARY KEY (sno)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE student
  OWNER TO mymotif;


四、創建java類

student表對應的pojo對象

package cn.itcast.mybatis.domain;

import java.sql.Date;

public class Student {

    private String SNO;
    private String SNAME;
    private String SEX;
    private Date BDATE;
    private String DIR;

    public Student() {
    }

    public Student(String id, String name, String sex,Date date , String dir) {
        this.SNO = id;
        this.SNAME = name;
        this.SEX = sex;
        this.DIR = dir;
        this.BDATE=date;
    }

    public String getDIR() {
        return DIR;
    }

    public void setDIR(String dir) {
        this.DIR = dir;
    }

    public String getSNO() {
        return SNO;
    }

    public void setSNO(String sno) {
        this.SNO = sno;
    }

    public String getSNAME() {
        return SNAME;
    }

    public void setSNAME(String name) {
        this.SNAME = name;
    }

    public String getSEX() {
        return SEX;
    }

    public void setSEX(String sEX) {
        SEX = sEX;
    }

    public Date getBDATE() {
        return BDATE;
    }

    public void setBDATE(Date bDATE) {
        BDATE = bDATE;
    }

    @Override
    public String toString() {
        return "Student [sno=" + SNO + ", name=" + SNAME + ", sex=" + SEX+ ", birthday=" + BDATE
                + ", direction=" + DIR + "]";
    }

}

映射文件cn/itcast/mybatis/domain/Student.xml(和pojo對象在一個包內

<?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="cn.itcast.mybatis.domain.Student">
    <sql id="cols">
        SNO,SNAME,SEX,BDATE,DIR
    </sql>
    <sql id="ucols">
        SNO=#{SNO},SNAME=#{SNAME},SEX=#{SEX},BDATE=#{BDATE},DIR=#{DIR}
    </sql>

    <!-- 查詢所有記錄 -->
    <select id="listAll" resultType="aliasesStudent">
        select
        <include refid="cols" />
        from STUDENT
    </select>

    <!-- 按條件查詢 -->
    <select id="find" parameterType="aliasesStudent" resultType="aliasesStudent">
        select * from STUDENT
        <where>
            <if test="SNAME!=null">
                and name like "%"#{SNAME}"%"
            </if>
            <if test="BDATE!=null">
                and age=#{BDATE}
            </if>
            <if test="DIR!=null">
                and age=#{DIR}
            </if>
        </where>
    </select>

    <!-- 查詢一個用戶 -->
    <select id="get" parameterType="string" resultType="aliasesStudent">
        select
        <include refid="cols" />
        from STUDENT where SNO=#{SNO}
    </select>

    <!-- 新增 -->
    <insert id="create" parameterType="aliasesStudent">
        insert into STUDENT (SNO,SNAME,SEX,BDATE,DIR)
        values(#{SNO},#{SNAME},#{SEX},#{BDATE},#{DIR})
    </insert>

    <!-- 修改 -->
    <update id="update" parameterType="aliasesStudent">
        update STUDENT
        <set>
            <if test="SNAME!=null">
                SNAME=#{SNAME},
            </if>
            <if test="BDATE!=null">
                BDATE=#{BDATE},
            </if>
            <if test="DIR!=null">
                DIR=#{DIR},
            </if>
        </set>

        where SNO=#{SNO}
    </update>

    <!-- 刪除 -->
    <delete id="delete" parameterType="string">
        delete from STUDENT where SNO=#{SNO}
    </delete>
</mapper>

對Student對象的訪問接口及實現類

package cn.itcast.mybatis.dao;

import java.util.List;

import cn.itcast.mybatis.domain.Student;

public interface IStudentDao {

    public List<Student> list();

    public Student get(String SNO);
    public int insert(Student S);
    public int update(Student S);
    public int deleteById(String SNO);
}


package cn.itcast.mybatis.dao;

import java.util.List;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import cn.itcast.mybatis.domain.Student;



public class StudentDaoImpl extends SqlSessionDaoSupport implements IStudentDao {

    @Override
    public List<Student> list() {
        // TODO 自動生成的方法存根
        return this.getSqlSession().selectList("cn.itcast.mybatis.domain.Student.listAll");
    }

    @Override
    public Student get(String SNO) {
        // TODO 自動生成的方法存根
        return (Student) this.getSqlSession().selectOne("cn.itcast.mybatis.domain.Student.get", SNO);
    }

    @Override
    public int insert(Student S) {
        // TODO 自動生成的方法存根
        return this.getSqlSession().insert("cn.itcast.mybatis.domain.Student.create", S);
    }

    @Override
    public int update(Student S) {
        // TODO 自動生成的方法存根
        return this.getSqlSession().update("cn.itcast.mybatis.domain.Student.update",S);
    }

    @Override
    public int deleteById(String SNO) {
        // TODO 自動生成的方法存根
        return this.getSqlSession().delete("cn.itcast.mybatis.domain.Student.delete",SNO);
    }
 
}

五、配置文件

resources/psqlStudentMapConfig.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>
    
   <typeAliases>
        <typeAlias type="cn.itcast.mybatis.domain.Student" alias="aliasesStudent"></typeAlias>
    </typeAliases>
 <environments default="development">
        
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="org.postgresql.Driver"/>
                <property name="url" value="jdbc:postgresql:mymotif"/>
                <property name="username" value="mymotif"/>
                <property name="password" value="passwd"/>
            </dataSource>
        </environment>
<!--         產品    可用于多個配置的 -->
        <environment id="product">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="org.postgresql.Driver"/>
                <property name="url" value="jdbc:postgresql:mymotif"/>
                <property name="username" value="mymotif"/>
                <property name="password" value="passwd"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="cn/itcast/mybatis/domain/Student.xml"/>
    </mappers>
</configuration>

resources/psql-beans.xml

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


    <!-- 數據源 -->


    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"></property>
        <property name="url"
            value="jdbc:postgresql:mymotif"></property>
        <property name="username" value="mymotif"></property>
        <property name="password" value="passwd"></property>
    </bean>

    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:resources/psqlStudentMapConfig.xml"></property>
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 事務相關控制 -->
    <bean name="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="StudentDao" class="cn.itcast.mybatis.dao.StudentDaoImpl">
        <property name="sqlSessionFactory" ref="sessionFactory"></property>
    </bean>

</beans>

六、測試類

package cn.itcast.mybatis.test;

import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.itcast.mybatis.dao.IStudentDao;
import cn.itcast.mybatis.domain.Student;

public class TestpStudentMybatis {

    /**
     * @param args
     */
    private static ApplicationContext cxt;

    public static void main(String[] args) {

        // TODO 自動生成的方法存根
        cxt = new ClassPathXmlApplicationContext("resources/psql-beans.xml");

        IStudentDao sd = (IStudentDao) cxt.getBean("StudentDao");
        List<Student> students = sd.list();
        System.out.println("STUDENT表的記錄數為:" + students.size());
        for (int i = 0; i < students.size(); i++)
            System.out.println(students.get(i).toString());

    }

}

運行結果:


數據庫改為mysql,只需改變配置文件如下

<?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>
    
   <typeAliases>
        <typeAlias type="cn.itcast.mybatis.domain.Student" alias="aliasesStudent"></typeAlias>
    </typeAliases>
 <environments default="development">
        
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8"/>
                <property name="username" value="mymotif"/>
                <property name="password" value="passwd"/>
            </dataSource>
        </environment>
<!--         產品    可用于多個配置的 -->
        <environment id="product">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8"/>
                <property name="username" value="mymotif"/>
                <property name="password" value="passwd"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="cn/itcast/mybatis/domain/Student.xml"/>
    </mappers>
</configuration>







































來自: http://my.oschina.net/u/2245781/blog/599951

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!