MyBatisDemo

来源:互联网 发布:淘宝免费送衣服是真的 编辑:程序博客网 时间:2024/06/14 02:57

项目全部目录:


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;    }@Overridepublic 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.Driverurl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8username=rootpassword=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,然后编写测试方法进行测试。