这篇文章主要介绍了mybatis简介与配置,介绍了mybatis+spring+mysql简单配置,有兴趣的可以了解一下
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结合包)。
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());
}
}
}
以上就是关于mybatis的简介与配置具体介绍的详细内容。