MyBatisDemo

项目全部目录:


1、使用Eclipse或者MyEclipse创建一个Maven项目,并在pom.xml中配置好MyBatis的jar包和MySQL驱动jar包,如下图:

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MyBatisDemo</groupId>
  <artifactId>MyBatisDemo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>MyBatisDemo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <!-- 导入MyBatis的jar包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>
    
    <!-- 导入MySQL数据库的驱动包 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.30</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>MyBatisDemo</finalName>
  </build>
</project>



2、打开MySQL数据库,新建数据库test并在test中创建students表:

students表:

DROP TABLE IF EXISTS `students`;
CREATE TABLE `students` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `subject` varchar(50) NOT NULL,
  `grade` int(11) NOT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
插入数据:

INSERT INTO `students` VALUES ('1', '张三', '语文', '100');
INSERT INTO `students` VALUES ('2', '李四', '语文', '90');
INSERT INTO `students` VALUES ('3', '王五', '语文', '50');
INSERT INTO `students` VALUES ('4', '张三', '数学', '80');
INSERT INTO `students` VALUES ('5', '李四', '数学', '90');
INSERT INTO `students` VALUES ('6', '王五', '数学', '99');
INSERT INTO `students` VALUES ('7', '李四', '英语', '60');
INSERT INTO `students` VALUES ('8', '王五', '英语', '79');
INSERT INTO `students` VALUES ('9', '赵六', '语文', '240');

3、在src/main/java目录中创建三个包,com.cn.dao,com.cn.entity,com.cn.mapping;利用MyBatis Generator(http://blog.csdn.net/conquer__el/article/details/77192910)自动生成StudentsMapper.java(我自己改成了StudentsDAO.java,也可以不改)、Students.java和StudentsMapper.xml文件并分别复制进入前创建的三个包中。

Students.java:

package com.cn.entity;

public class Students {
    private Integer sid;

    private String name;

    private String subject;

    private Integer grade;
    
    public Students() {
    	
    }
    
    public Students(Integer sid, String name, String subject, Integer grade) {
		super();
		this.sid = sid;
		this.name = name;
		this.subject = subject;
		this.grade = grade;
	}

	public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject == null ? null : subject.trim();
    }

    public Integer getGrade() {
        return grade;
    }

    public void setGrade(Integer grade) {
        this.grade = grade;
    }

	@Override
	public String toString() {
		return "Students [sid=" + sid + ", name=" + name + ", subject=" + subject + ", grade=" + grade + "]";
	}
    
}

StudentsDAO.java:

package com.cn.dao;

import com.cn.entity.Students;

public interface StudentsDAO {
    int deleteByPrimaryKey(Integer sid);

    int insert(Students record);

    int insertSelective(Students record);

    Students selectByPrimaryKey(Integer sid);

    int updateByPrimaryKeySelective(Students record);

    int updateByPrimaryKey(Students record);
}

StudentsMapper.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.cn.mapping.StudentsMapper" >
  <resultMap id="BaseResultMap" type="com.cn.entity.Students" >
    <id column="sid" property="sid" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="subject" property="subject" jdbcType="VARCHAR" />
    <result column="grade" property="grade" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    sid, name, subject, grade
  </sql>
  
  <!-- 查找 -->
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from students
    where sid = #{sid,jdbcType=INTEGER}
  </select>
  <select id="selectAllRecode" resultMap="BaseResultMap">
    select * from students
  </select>
  
  <!-- 删除 -->
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from students
    where sid = #{sid,jdbcType=INTEGER}
  </delete>
  
  <!-- 插入 -->
  <insert id="insert" parameterType="com.cn.entity.Students" >
    insert into students (sid, name, subject, 
      grade)
    values (#{sid,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{subject,jdbcType=VARCHAR}, 
      #{grade,jdbcType=INTEGER})
  </insert>
  <insert id="insertSelective" parameterType="com.cn.entity.Students" >
    insert into students
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="sid != null" >
        sid,
      </if>
      <if test="name != null" >
        name,
      </if>
      <if test="subject != null" >
        subject,
      </if>
      <if test="grade != null" >
        grade,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="sid != null" >
        #{sid,jdbcType=INTEGER},
      </if>
      <if test="name != null" >
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="subject != null" >
        #{subject,jdbcType=VARCHAR},
      </if>
      <if test="grade != null" >
        #{grade,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  
  <!-- 修改 -->
  <update id="updateByPrimaryKeySelective" parameterType="com.cn.entity.Students" >
    update students
    <set >
      <if test="name != null" >
        name = #{name,jdbcType=VARCHAR},
      </if>
      <if test="subject != null" >
        subject = #{subject,jdbcType=VARCHAR},
      </if>
      <if test="grade != null" >
        grade = #{grade,jdbcType=INTEGER},
      </if>
    </set>
    where sid = #{sid,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.cn.entity.Students" >
    update students
    set name = #{name,jdbcType=VARCHAR},
      subject = #{subject,jdbcType=VARCHAR},
      grade = #{grade,jdbcType=INTEGER}
    where sid = #{sid,jdbcType=INTEGER}
  </update>
</mapper>


4、在src/main/resources目录创建两个配置文件jdbc.properties、mybatis-config.xml:

jdbc.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456

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格式对应文件,从而使得主配置文件更加通用。这样对部署非常有用  -->  
     <properties resource="jdbc.properties" />   
    <!-- 设置别名,一定要放在properties下面  -->  
    <typeAliases>  
        <typeAlias alias="scores" type="com.cn.entity.Students"  />  
    </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/test?characterEncoding=UTF-8"/>   
            <property name="username" value="root"/>   
            <property name="password" value="christmas258@"/>  -->  
            <property name="driver" value="${driver}" />  
                <property name="url" value="${url}" />  
                <property name="username" value="${username}" />  
                <property name="password" value="${password}" />   
            </dataSource>  
        </environment>  
    </environments>  
    <!-- 列出映射文件 -->  
    <mappers>  
        <mapper resource="com/cn/mapping/StudentsMapper.xml" />  
    </mappers>  
</configuration>

5、在src/main/test创建测试方法,先创建包com.cn.dao,在创建StudentsDAOTest.java

StudentsDAOTest.java:

package com.cn.dao;

import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.cn.entity.Students;

public class StudentsDAOTest {

	private static SqlSessionFactory sqlSessionFactory;
	private static Reader reader;
	
	static {
		try {
			reader = Resources.getResourceAsReader("mybatis-config.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	/*
	 * 查找
	 * */
	public static void selectByPrimaryKey(int id) {
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession();
			Students students = session.selectOne("com.cn.mapping.StudentsMapper.selectByPrimaryKey", id);
			if (students == null) {
				System.out.println("null");
			} else {
				System.out.println(students.toString());
			}
		} finally {
			session.close();
		}
	}
	
	public static void selectAllRecode() {
		SqlSession session = null;
		List<Students> list = new ArrayList<Students>(); 
		try {
			session = sqlSessionFactory.openSession();
			list = session.selectList("com.cn.mapping.StudentsMapper.selectAllRecode");
			if (list == null){
				System.out.println("null");
			} else {
				for(Students stu : list) {
					System.out.println(stu.toString());
				}
			}
		} finally {
			session.close();
		}
	}
	
	/*
	 * 增加
	 * */
	public static void insert(Students students) {
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession();
			//返回值是记录条数
			int resultCount = session.insert("com.cn.mapping.StudentsMapper.insert", students);
			System.out.println("当前插入的students_sid: " + students.getSid() + ", 当前插入数据库中的条数:" + resultCount);
			session.commit();
		} finally {
			session.close();
		}
	}
	
	/*
	 * 删除
	 * */
	public static void deleteByPrimaryKey(int id) {
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession();
			int resultCount = session.delete("com.cn.mapping.StudentsMapper.deleteByPrimaryKey",id);
			System.out.println("当前输出的条数:" + resultCount);
			session.commit();
		} finally {
			session.close();
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//selectByPrimaryKey(10);
		selectAllRecode();
		//Students students1 = new Students(10, "赵六", "英语", 90);
		//insert(students1);
		//deleteByPrimaryKey(10);
	}

}

6、运行测试方法将数据库的记录打印到后台,或者操作插入、删除数据库记录等,也可以自己再StudentsMapper.xml中配置SQL,然后编写测试方法进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值