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,然后编写测试方法进行测试。