1.创建STUDENTS表并插入一些数据:
-- 创建数据库
CREATE DATABASE mybatis;
-- 使用数据库
USE mybatis;
-- 创建表
CREATE TABLE STUDENT (
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'PK',
name VARCHAR(30) NOT NULL COMMENT '名称',
email VARCHAR(30) NOT NULL COMMENT '邮箱',
dob DATE DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=gbk COMMENT '学生表';
-- 插入数据
INSERT INTO STUDENT(name, email, dob) VALUES('student1', 'student1@qq.com', '1990-01-01');
INSERT INTO STUDENT(name, email, dob) VALUES('student2', 'student2@qq.com', '1990-02-02');
2. 创建一个总的目录(文件夹名为mybatis-demos),用于存放所有的MyBatis应用示例
3. 打开DOS命令行窗体,进入到上面创建的文件夹mybatis-demos。使用Maven Archetype生成项目骨架:
3.1 输入命令:mvn archetype:generate
3.2 在运行到“Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 580: ”和“Choose org.apache.maven.archetypes:maven-archetype-quickstart version:” 外时直接敲回车
3.3 输入项目的groupId、artifactId、version、package,然后检查输入的groupId、artifactId、version、package信息是否正确,输入“Y”确认
使用Maven Archetype生成的项目的目录结构:
4. 修改mybatis-demo-01文件夹下的pom.xml文件,添加项目运行需要的依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
</dependencies>
5. 在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新domain文件夹,然后在domain文件夹下创建Student实体类:
Student.java
package com.github.wangguocheng.mybatis.demo.domain;
import java.util.Date;
public class Student {
private long id;
private String name;
private String email;
private Date dob;
public Student() {}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
}
6.在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新建mapper文件夹,然后在mapper文件夹下创建StudentMapper类及StudentMapper.xml映射文件:
StudentMapper.java
package com.github.wangguocheng.mybatis.demo.mapper;
import java.util.List;
import com.github.wangguocheng.mybatis.demo.domain.Student;
public interface StudentMapper {
public void insertStudent(Student student);
public List<Student> findAllStudents();
public Student findStudentById(long id);
}
StudentMapper.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.github.wangguocheng.mybatis.demo.mapper.StudentMapper">
<resultMap type="Student" id="StudentResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<result property="dob" column="dob"/>
</resultMap>
<select id="insertStudent" parameterType="Student">
INSERT INTO STUDENT(name, email, dob)
VALUES(#{name}, #{email}, #{dob})
</select>
<select id="findAllStudents" resultMap="StudentResultMap">
SELECT * FROM STUDENT
</select>
<select id="findStudentById" resultMap="StudentResultMap" parameterType="long">
SELECT * FROM STUDENT WHERE id = #{id}
</select>
</mapper>
7. 在mybatis-demo-01\src\main文件夹下新建resources文件夹,然后在resources文件夹下创建mybatis配置文件及log4j配置文件
mybaits.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="com.github.wangguocheng.mybatis.demo.domain.Student" alias="Student"/>
</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/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="abc123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/github/wangguocheng/mybatis/demo/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
log4j.properties
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n
8. 在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新建util文件夹,然后在util文件夹下创建工具类
MyBatisSqlSessionFactory.java
package com.github.wangguocheng.mybatis.demo.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisSqlSessionFactory {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory getSqlSessionFactory() {
if(sqlSessionFactory == null) {
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream("mybatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch(IOException e) {
throw new RuntimeException(e.getCause());
}
}
return sqlSessionFactory;
}
public static SqlSession openSession() {
return getSqlSessionFactory().openSession();
}
}
9. 修改pom.xml文件,在<build>节点下添加如下代码:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
10. 在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新建service文件夹,然后在service文件夹下创建StudentService类
StudentService.java
package com.github.wangguocheng.mybatis.demo.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.wangguocheng.mybatis.demo.domain.Student;
import com.github.wangguocheng.mybatis.demo.mapper.StudentMapper;
import com.github.wangguocheng.mybatis.demo.util.MyBatisSqlSessionFactory;
public class StudentService {
private Logger logger = LoggerFactory.getLogger(getClass());
public List<Student> findAllStudents() {
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
return studentMapper.findAllStudents();
} finally {
sqlSession.close();
}
}
public Student findStudentById(Long id) {
logger.debug("Select Student By ID :{}", id);
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
return studentMapper.findStudentById(id);
} finally {
sqlSession.close();
}
}
public void createStudent(Student student) {
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
studentMapper.insertStudent(student);
sqlSession.commit();
} finally {
sqlSession.close();
}
}
}
11. 在mybatis-demo-01\src\test\java\com\github\wangguocheng\mybatis\demo\service文件夹下新建service文件夹,然后在service文件夹下创建StudentServiceTest类
StudentServiceTest.java
package com.github.wangguocheng.mybatis.demo.service;
import java.util.Date;
import java.util.List;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.github.wangguocheng.mybatis.demo.domain.Student;
public class StudentServiceTest {
private static StudentService studentService;
@BeforeClass
public static void setup() {
studentService = new StudentService();
}
@AfterClass
public static void tearDown() {
studentService = null;
}
@Test
public void testFindAllStudents() {
List<Student> students = studentService.findAllStudents();
Assert.assertNotNull(students);
for(Student student : students) {
System.out.println(student);
}
}
@Test
public void testFindStudentById() {
Student student = studentService.findStudentById(1L);
Assert.assertNotNull(student);
System.out.println(student);
}
@Test
public void testCreateStudent() {
Student student = new Student();
student.setName("new-student-02");
student.setEmail("new-student-02@163.com");
student.setDob(new Date());
studentService.createStudent(student);
}
}
12. 在DOS命令窗体中进入mybatis-demo-01文件夹,并运行命令mvn clean test
项目源码见随附件
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com