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结合包)。
下载地址:
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()); } } }
上一篇: 浅谈Maven环境隔离应用
推荐阅读
-
mybatis简介与配置_动力节点Java学院整理
-
Java正则表达式_动力节点Java学院整理
-
struts1登录示例代码_动力节点Java学院整理
-
Spring MVC之WebApplicationContext_动力节点Java学院整理
-
Spring MVC入门_动力节点Java学院整理
-
TreeSet详解和使用示例_动力节点Java学院整理
-
Java集合Map常见问题_动力节点Java学院整理
-
Java中ArrayList和LinkedList之间的区别_动力节点Java学院整理
-
详解PipedInputStream和PipedOutputStream_动力节点Java学院整理
-
Serializable接口的作用_动力节点Java学院整理