mybatis简介与配置_动力节点Java学院整理

MyBatis简介

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。

下载地址:
http://ibatis.apache.org/tools/ibator
http://code.google.com/p/mybatis/

MyBatis+Spring+MySql简单配置

搭建Spring环境

1,建立maven的web项目;
2,加入Spring框架、配置文件;
3,在pom.xml中加入所需要的jar包(spring框架的、mybatis、mybatis-spring、junit等);
4,更改web.xml和spring的配置文件;
5,添加一个jsp页面和对应的Controller;
6,测试。

建立MySql数据库

建立一个学生选课管理数据库。

表:学生表、班级表、教师表、课程表、学生选课表。

逻辑关系:每个学生有一个班级;每个班级对应一个班主任教师;每个教师只能当一个班的班主任;

使用下面的sql进行建数据库,先建立学生表,插入数据(2条以上)。

更多sql请下载项目源文件,在resource/sql中。

/* 建立数据库 */
CREATE DATABASE STUDENT_MANAGER;
USE STUDENT_MANAGER; 

/***** 建立student表 *****/
CREATE TABLE STUDENT_TBL
(
  STUDENT_ID     VARCHAR(255) PRIMARY KEY,
  STUDENT_NAME    VARCHAR(10) NOT NULL,
  STUDENT_SEX    VARCHAR(10),
  STUDENT_BIRTHDAY  DATE,
  CLASS_ID      VARCHAR(255)
); 

/*插入学生数据*/
INSERT INTO STUDENT_TBL (STUDENT_ID,
             STUDENT_NAME,
             STUDENT_SEX,
             STUDENT_BIRTHDAY,
             CLASS_ID)
 VALUES  (123456,
      '某某某',
      '女',
      '1980-08-01',
      121546
      )

创建连接MySql使用的配置文件mysql.properties。

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=bjpowernode&useUnicode=true&characterEncoding=UTF-8 

搭建MyBatis环境

顺序随便,现在的顺序是因为可以尽量的少的修改写好的文件。

创建实体类: StudentEntity

public class StudentEntity implements Serializable { 

  private static final long serialVersionUID = 3096154202413606831L;
  private ClassEntity classEntity;
  private Date studentBirthday;
  private String studentID;
  private String studentName;
  private String studentSex; 

  public ClassEntity getClassEntity() {
    return classEntity;
  } 

  public Date getStudentBirthday() {
    return studentBirthday;
  } 

  public String getStudentID() {
    return studentID;
  } 

  public String getStudentName() {
    return studentName;
  } 

  public String getStudentSex() {
    return studentSex;
  } 

  public void setClassEntity(ClassEntity classEntity) {
    this.classEntity = classEntity;
  } 

  public void setStudentBirthday(Date studentBirthday) {
    this.studentBirthday = studentBirthday;
  } 

  public void setStudentID(String studentID) {
    this.studentID = studentID;
  } 

  public void setStudentName(String studentName) {
    this.studentName = studentName;
  } 

  public void setStudentSex(String studentSex) {
    this.studentSex = studentSex;
  }
}

创建数据访问接口

Student类对应的dao接口:StudentMapper。

public interface StudentMapper { 

  public StudentEntity getStudent(String studentID); 

  public StudentEntity getStudentAndClass(String studentID); 

  public List<StudentEntity> getStudentAll(); 

  public void insertStudent(StudentEntity entity); 

  public void deleteStudent(StudentEntity entity); 

  public void updateStudent(StudentEntity entity);
}

创建SQL映射语句文件

Student类的sql语句文件StudentMapper.xml

resultMap标签:表字段与属性的映射。

Select标签:查询sql。

<?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.manager.data.StudentMapper"> 

  <resultMap type="StudentEntity" id="studentResultMap">
    <id property="studentID" column="STUDENT_ID"/>
    <result property="studentName" column="STUDENT_NAME"/>
    <result property="studentSex" column="STUDENT_SEX"/>
    <result property="studentBirthday" column="STUDENT_BIRTHDAY"/>
  </resultMap> 

  <!-- 查询学生,根据id -->
  <select id="getStudent" parameterType="String" resultType="StudentEntity" resultMap="studentResultMap">
    <![CDATA[
      SELECT * from STUDENT_TBL ST
        WHERE ST.STUDENT_ID = #{studentID}
    ]]>
  </select> 

  <!-- 查询学生列表 -->
  <select id="getStudentAll" resultType="commanagerdatamodelStudentEntity" resultMap="studentResultMap">
    <![CDATA[
      SELECT * from STUDENT_TBL
    ]]>
  </select> 

</mapper>

创建MyBatis的mapper配置文件

在src/main/resource中创建MyBatis配置文件:mybatis-config.xml。

typeAliases标签:给类起一个别名。com.manager.data.model.StudentEntity类,可以使用StudentEntity代替。

Mappers标签:加载MyBatis中实体类的SQL映射语句文件。

<?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 alias="StudentEntity" type="com.manager.data.model.StudentEntity"/>
  </typeAliases>
  <mappers>
    <mapper resource="com/manager/data/maps/StudentMapper.xml" />
  </mappers>
</configuration> 

修改Spring 的配置文件

主要是添加SqlSession的制作工厂类的bean:SqlSessionFactoryBean,(在mybatis.spring包中)。需要指定配置文件位置和dataSource。

和数据访问接口对应的实现bean。通过MapperFactoryBean创建出来。需要执行接口类全称和SqlSession工厂bean的引用。

<!-- 导入属性配置文件 -->
<context:property-placeholder location="classpath:mysql.properties" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
</bean> 

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
</bean> 

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="configLocation" value="classpath:mybatis-config.xml" />
  <property name="dataSource" ref="dataSource" />
</bean> 

<!— mapper bean -->
<bean id="studentMapper" class="org.mybatis.spring.MapperFactoryBean">
  <property name="mapperInterface" value="com.manager.data.StudentMapper" />
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean> 

也可以不定义mapper的bean,使用注解:

将StudentMapper加入注解

@Repository
@Transactional
public interface StudentMapper {
} 

对应的需要在dispatcher-servlet.xml中加入扫描:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="annotationClass" value="org.springframework.stereotype.Repository"/>
  <property name="basePackage" value="comlimingmanager"/>
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean> 

测试StudentMapper

使用SpringMVC测试,创建一个TestController,配置tomcat,访问index.do页面进行测试:

@Controller
public class TestController { 

  @Autowired
  private StudentMapper studentMapper; 

  @RequestMapping(value = "index.do")
  public void indexPage() {
    StudentEntity entity = studentMappergetStudent("10000013");
    System.out.println("name:" + entity.getStudentName());
  }
} 

使用Junit测试:

@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "test-servletxml")
public class StudentMapperTest { 

  @Autowired
  private ClassMapper classMapper; 

  @Autowired
  private StudentMapper studentMapper; 

  @Transactional
  public void getStudentTest(){
    StudentEntity entity = studentMapper.getStudent("10000013");
    System.out.println("" + entity.getStudentID() + entity.getStudentName()); 

    List<StudentEntity> studentList = studentMapper.getStudentAll();
    for( StudentEntity entityTemp : studentList){
      System.out.println(entityTemp.getStudentName());
    } 

  }
}
(0)

相关推荐

  • Spring+MyBatis多数据源配置实现示例

    最近用到了MyBatis配置多数据源,原以为简单配置下就行了,实际操作后发现还是要费些事的,这里记录下,以作备忘 不多废话,直接上代码,后面会有简单的实现介绍 jdbc和log4j的配置 #定义输出格式 ConversionPattern=%d %-5p [%t] %c - %m%n log4j.rootLogger=DEBUG,Console log4j.logger.com.cnblogs.lzrabbit=DEBUG log4j.logger.org.springframework=ERR

  • Spring Boot 与 mybatis配置方法

    1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </

  • springmvc与mybatis集成配置实例详解

    简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求.闲暇时间把项目配置文件共享出来,供大家参看: 1.首先我们来看下依赖的pom: <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.ve

  • MyBatis配置文件的写法和简单使用

    初识 MyBatis 一 最初 Apache 有一个batis的开源项目,放在Google code 中,后来因为一些原因迁移到了github,就是今天的myBatis 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集.MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普

  • MyBatis SqlMapConfig.xml配置

    SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) settings(全局配置参数) typeAiases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境集合属性对象)mappers(映射器) environment(环境子属性对象) transactionManager(事物管理) datesource(数据源 mappers(映射器) 一.SqlMapC

  • MyBatis 如何写配置文件和简单使用

    MyBatis 如何写配置文件和简单使用 MyBatis3.x 这里简单贴一下MyBatis的介绍,具体使用方法会在代码中贴出. MyBatis的前世今生 MyBatis的前身就是iBatis,iBatis本是由Clinton Begin开发,后来捐给Apache基金会,成立了iBatis开源项目.2010年5月该项目由Apahce基金会迁移到了Google Code,并且改名为MyBatis. 尽管如此,它的包结构仍然为ibatis. www.mybatis.org/ https://gith

  • mybatis简介与配置_动力节点Java学院整理

    MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等"一站式"ORM解决方案而言,Mybatis 是一种"半自动化"的ORM实现. 需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包

  • Struts1简介和入门_动力节点Java学院整理

    本文为大家分享了Struts1简介和入门的学习资料,供大家参考,具体内容如下 1. 框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.也就是说框架是一个半成品的应用程序. 我们所面对的应用程序一般都是分为两部分,一部分是业务相关的组件部分,另一部分是和业务无关的组件部分.而我们知道和业务相关的组件部分的重用性是非常低的,这也是显而易见的事情:而和业务无关的组件部分,如验证.异常.程序流程控制等等服务组件的复用性是非常高的.所以当人们在不同的应

  • 数据库连接池c3p0配置_动力节点Java学院整理

    c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1.setters一个个地设置各个配置项 这种方式最繁琐,形式一般是这样: Properties props = new Properties(); InputStream in = ConnectionManager.class.getResourceAsStream("/c3p0.properties&q

  • ByteArrayOutputStream简介和使用_动力节点Java学院整理

    ByteArrayOutputStream 介绍 ByteArrayOutputStream 是字节数组输出流.它继承于OutputStream. ByteArrayOutputStream 中的数据被写入一个 byte 数组.缓冲区会随着数据的不断写入而自动增长.可使用 toByteArray() 和 toString() 获取数据. OutputStream 函数列表 我们来看看ByteArrayOutputStream的父类OutputStream的函数接口. // 构造函数 Output

  • Java异常简介和架构_动力节点Java学院整理

    Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性.在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了"什么"被抛出,异常堆栈跟踪回答了"在哪"抛出,异常信息回答了"为什么"会抛出. Java异常机制用到的几个关键字:try.catch.finally.throw.thro

  • 约定优于配置_动力节点Java学院整理

    开始尝试使用Maven构建项目的时候,惊讶于只需要简单的几行xml就可以完成原来ant需要大量xml才能完成的工作.不得不说,人们在经过一定技术积累后,总能想到办法简化自己的工作.以前做项目,总是写Ant配置文件,满足于自己更灵活的配置,而没有去思考,这么做到底值不值得. 想象一下,如果我们每个人都满足于自己的私欲,为所欲为,我们的世界会乱成什么样子?在软件世界里,如果每个程序员都定义一套自己的规范,那么我们的软件会乱成什么样子?各个版本的浏览器就已经让众多程序员头痛不已了,更别提其他的了.想到

  • ByteArrayInputStream简介和使用_动力节点Java学院整理

    ByteArrayInputStream 介绍 ByteArrayInputStream 是字节数组输入流.它继承于InputStream. 它包含一个内部缓冲区,该缓冲区包含从流中读取的字节:通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的. 我们都知道,InputStream通过read()向外提供接口,供它们来读取字节数据:而ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方

  • redis安装和配置_动力节点Java学院整理

    在Ubuntu上安装Redis 要安装Redis在Ubuntu上,打开终端,然后键入以下命令: $sudo apt-get update $sudo apt-get install redis-server 这将在您的计算机上安装Redis. 启动Redis $redis-server 检查Redis是否在工作? $redis-cli 这将打开一个Redis提示,如下图所示: redis 127.0.0.1:6379> 在上面的提示127.0.0.1是本机的IP地址,6379是Redis服务器运

  • bootstrap基本配置_动力节点Java学院整理

    Bootstrap 安装是非常容易的.本章将讲解如何下载并安装 Bootstrap,讨论 Bootstrap 文件结构,并通过一个实例演示它的用法. 实例采用的是百度的静态资源库上的Bootstrap资源. <!-- 新 Bootstrap 核心 CSS 文件 --> <link href="http://apps.bdimg.com/libs/bootstrap/3.2.0/css/bootstrap.min.css" rel="external nofo

  • Nginx简介_动力节点Java学院整理

    1.什么是Nginx Nginx来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx.Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色.稳定的服务. Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证.由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自

随机推荐