- 浏览: 1017351 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
一、MyBatis简介与配置MyBatis+Spring+MySql
1.1MyBatis简介
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/
1.2MyBatis+Spring+MySql简单配置
1.2.1搭建Spring环境
1,建立maven的web项目;
2,加入Spring框架、配置文件;
3,在pom.xml中加入所需要的jar包(spring框架的、mybatis、mybatis-spring、junit等);
4,更改web.xml和spring的配置文件;
5,添加一个jsp页面和对应的Controller;
6,测试。
可参照:http://limingnihao.javaeye.com/blog/830409 。使用Eclipse的Maven构建SpringMVC项目
1.2.2建立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
- )
/* 建立数据库 */ 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=limingnihao&useUnicode=true&characterEncoding=UTF- 8
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=limingnihao&useUnicode=true&characterEncoding=UTF-8
1.2.3搭建MyBatis环境
顺序随便,现在的顺序是因为可以尽量的少的修改写好的文件。
1.2.3.1创建实体类: 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;
- }
- }
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; } }
1.2.3.2创建数据访问接口
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);
- }
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); }
1.2.3.3创建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 = "com.manager.data.model.StudentEntity" resultMap = "studentResultMap" >
- <![CDATA[
- SELECT * from STUDENT_TBL
- ]]>
- </ select >
- </ mapper >
<?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="com.manager.data.model.StudentEntity" resultMap="studentResultMap"> <![CDATA[ SELECT * from STUDENT_TBL ]]> </select> </mapper>
1.2.3.4创建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 >
<?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>
1.2.3.5修改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 >
<!-- 导入属性配置文件 --> <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>
1.2.4测试StudentMapper
使用SpringMVC测试,创建一个TestController,配置tomcat,访问index.do页面进行测试:
- @Controller
- public class TestController {
- @Autowired
- private StudentMapper studentMapper;
- @RequestMapping (value = "index.do" )
- public void indexPage() {
- StudentEntity entity = studentMapper.getStudent("10000013" );
- System.out.println("name:" + entity.getStudentName());
- }
- }
@Controller public class TestController { @Autowired private StudentMapper studentMapper; @RequestMapping(value = "index.do") public void indexPage() { StudentEntity entity = studentMapper.getStudent("10000013"); System.out.println("name:" + entity.getStudentName()); } }
使用Junit测试:
- 使用Junit测试:
- Java代码
- @RunWith (value = SpringJUnit4ClassRunner. class )
- @ContextConfiguration (value = "test-servlet.xml" )
- 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());
- }
- }
- }
使用Junit测试: Java代码 @RunWith(value = SpringJUnit4ClassRunner.class) @ContextConfiguration(value = "test-servlet.xml") 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()); } } }
更详细的功能源代码http://limingnihao.javaeye.com/admin/blogs/782190 页面最下面;
二、SQL语句映射文件(1)resultMap
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如:
- < mappers >
- < mapper resource = "com/liming/manager/data/mappers/UserMapper.xml" />
- < mapper resource = "com/liming/manager/data/mappers/StudentMapper.xml" />
- < mapper resource = "com/liming/manager/data/mappers/ClassMapper.xml" />
- < mapper resource = "com/liming/manager/data/mappers/TeacherMapper.xml" />
- </ mappers >
<mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" /> </mappers>
SQL 映射XML 文件一些初级的元素:
1. cache – 配置给定模式的缓存
2. cache-ref –
从别的模式中引用一个缓存
3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象
4. sql –
一个可以被其他语句复用的SQL 块
5. insert – 映射INSERT 语句
6. update – 映射UPDATE
语句
7. delete – 映射DELEETE 语句
8. select - 映射SELECT语句
2.1 resultMap
resultMap 是MyBatis 中最重要最强大的元素了。你可以让你比使用JDBC 调用结果集省掉90%的代码,也可以让你做许多JDBC 不支持的事。现实上,要写一个等同类似于交互的映射这样的复杂语句,可能要上千行的代码。ResultMaps 的目的,就是这样简单的语句而不需要多余的结果映射,更多复杂的语句,除了只要一些绝对必须的语句描述关系以外,再也不需要其它的。
resultMap属性:type为java实体类;id为此resultMap的标识。
resultMap可以设置的映射:
1. constructor – 用来将结果反射给一个实例化好的类的构造器
a) idArg – ID 参数;将结果集标记为ID,以方便全局调用
b) arg
–反射到构造器的通常结果
2. id – ID 结果,将结果集标记为ID,以方便全局调用
3. result – 反射到JavaBean 属性的普通结果
4. association – 复杂类型的结合;多个结果合成的类型
a) nested result mappings – 几resultMap 自身嵌套关联,也可以引用到一个其它上
5. collection –复杂类型集合a collection of complex
types
6. nested result mappings – resultMap
的集合,也可以引用到一个其它上
7. discriminator – 使用一个结果值以决定使用哪个resultMap
a) case – 基本一些值的结果映射的case 情形
i. nested result mappings –一个case 情形本身就是一个结果映射,因此也可以包括一些相同的元素,也可以引用一个外部resultMap。
2.1.1 id、result
id、result是最简单的映射,id为主键映射;result其他基本数据库表字段到实体类属性的映射。
最简单的例子:
- < 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 >
<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、result语句属性配置细节:
属性 |
描述 |
|
property |
需要映射到 JavaBean 的属性名称。 |
|
column |
数据表的列名或者标签别名。 |
|
javaType |
一个完整的类名,或者是一个类型别名。如果你匹配的是一个 JavaBean ,那 MyBatis 通常会自行检测到。然后,如果你是要映射到一个 HashMap ,那你需要指定 javaType 要达到的目的。 |
|
jdbcType |
数据表支持的类型列表。这个属性只在 insert,update 或 delete 的时候针对允许空的列有用。 JDBC 需要这项,但 MyBatis 不需要。如果你是直接针对 JDBC 编码,且有允许空的列,而你要指定这项。 |
|
typeHandler |
使用这个属性可以覆写类型处理器。这项值可以是一个完整的类名,也可以是一个类型别名。 |
|
支持的JDBC类型
为了将来的引用,MyBatis 支持下列JDBC
类型,通过JdbcType
枚举:
BIT,FLOAT,CHAR,TIMESTAMP,OTHER,UNDEFINED,TINYINT,REAL,VARCHAR,BINARY,BLOB,NVARCHAR,SMALLINT,DOUBLE,LONGVARCHAR,VARBINARY,CLOB,NCHAR,INTEGER,NUMERIC,DATE,LONGVARBINARY,BOOLEAN,NCLOB,BIGINT,DECIMAL,TIME,NULL,CURSOR
2.1.2 constructor
我们使用id、result时候,需要定义java实体类的属性映射到数据库表的字段上。这个时候是使用JavaBean实现的。当然我们也可以使用实体类的构造方法来实现值的映射,这个时候是通过构造方法参数的书写的顺序来进行赋值的。
使用construcotr功能有限(例如使用collection级联查询)。
上面使用id、result实现的功能就可以改为:
- < resultMap type = "StudentEntity" id = "studentResultMap" >
- < constructor >
- < idArg javaType = "String" column = "STUDENT_ID" />
- < arg javaType = "String" column = "STUDENT_NAME" />
- < arg javaType = "String" column = "STUDENT_SEX" />
- < arg javaType = "Date" column = "STUDENT_BIRTHDAY" />
- </ constructor >
- </ resultMap >
<resultMap type="StudentEntity" id="studentResultMap" > <constructor> <idArg javaType="String" column="STUDENT_ID"/> <arg javaType="String" column="STUDENT_NAME"/> <arg javaType="String" column="STUDENT_SEX"/> <arg javaType="Date" column="STUDENT_BIRTHDAY"/> </constructor> </resultMap>
当然,我们需要定义StudentEntity实体类的构造方法:
- public StudentEntity(String studentID, String studentName, String studentSex, Date studentBirthday){
- this .studentID = studentID;
- this .studentName = studentName;
- this .studentSex = studentSex;
- this .studentBirthday = studentBirthday;
- }
public StudentEntity(String studentID, String studentName, String studentSex, Date studentBirthday){ this.studentID = studentID; this.studentName = studentName; this.studentSex = studentSex; this.studentBirthday = studentBirthday; }
2.1.3 association联合
联合元素用来处理“一对一”的关系。需要指定映射的Java实体类的属性,属性的javaType(通常MyBatis
自己会识别)。对应的数据库表的列名称。如果想覆写的话返回结果的值,需要指定typeHandler。
不同情况需要告诉MyBatis
如何加载一个联合。MyBatis 可以用两种方式加载:
1. select: 执行一个其它映射的SQL
语句返回一个Java实体类型。较灵活;
2. resultsMap: 使用一个嵌套的结果映射来处理通过join查询结果集,映射成Java实体类型。
例如,一个班级对应一个班主任。
首先定义好班级中的班主任属性:
- private TeacherEntity teacherEntity;
private TeacherEntity teacherEntity;
2.1.3.1使用select实现联合
例:班级实体类中有班主任的属性,通过联合在得到一个班级实体时,同时映射出班主任实体。
这样可以直接复用在TeacherMapper.xml文件中定义好的查询teacher根据其ID的select语句。而且不需要修改写好的SQL语句,只需要直接修改resultMap即可。
ClassMapper.xml文件部分内容:
- < resultMap type = "ClassEntity" id = "classResultMap" >
- < id property = "classID" column = "CLASS_ID" />
- < result property = "className" column = "CLASS_NAME" />
- < result property = "classYear" column = "CLASS_YEAR" />
- < association property = "teacherEntity" column = "TEACHER_ID" select = "getTeacher" />
- </ resultMap >
- < select id = "getClassByID" parameterType = "String" resultMap = "classResultMap" >
- SELECT * FROM CLASS_TBL CT
- WHERE CT.CLASS_ID = #{classID};
- </ select >
<resultMap type="ClassEntity" id="classResultMap"> <id property="classID" column="CLASS_ID" /> <result property="className" column="CLASS_NAME" /> <result property="classYear" column="CLASS_YEAR" /> <association property="teacherEntity" column="TEACHER_ID" select="getTeacher"/> </resultMap> <select id="getClassByID" parameterType="String" resultMap="classResultMap"> SELECT * FROM CLASS_TBL CT WHERE CT.CLASS_ID = #{classID}; </select>
TeacherMapper.xml文件部分内容:
-
<
resultMap
type
=<
发表评论
-
MyBatis3整合Spring3、SpringMVC3
2011-05-10 13:14 1328开发环境: System:Windows WebB ... -
MyBatis3整合Spring3的Transaction事务处理
2011-05-10 13:12 1358正如第二版,Spring 仅支持 iBatis2。那么我们就想 ... -
MyBatis学习 之 一、MyBatis简介与配置MyBaits+Spring+MySql
2011-05-05 17:13 1640一、MyBatis简介与配置MyBait ... -
MyBatis学习 之 二、SQL语句映射文件(2)
2011-05-05 17:10 2241二、SQL语句映射文件(2) 2.2 ... -
MyBatis学习 之 二、SQL语句映射文件(1)
2011-05-05 17:07 1562二、SQL语句映射文件(1) SQL ... -
mybatis动态SQL语句
2011-05-05 14:24 2549三、动态SQL语句 ...
相关推荐
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
本文使用Shiro整合Mybatis,利用Druid数据库连接池,实现用户认证和授权。 ———————————————— 版权声明:本文为CSDN博主「全村第二帅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处...
目录 一、整体结构图 二、Spring boot搭建 三、整合Mybatis(自动生成工具) 1、集成druid,使用连接池 2、自动生成工具依赖和插件 3、最终的pom.xml文件: ...版权声明:本文为博主原创文章,转载请附上博文链接!
MyBatis Interceptor 是 MyBatis 框架中的一个重要组件,它允许我们在 SQL 执行过程中插入自定义的行为。在本例中,我们探讨的是如何使用 MyBatis Interceptor 来实现分页功能,这对于处理大数据量的查询是至关重要...
SpringBoot+Mybatis+thymeleaf的Java博客系统开源 运行环境 jdk7+tomcat7+mysql+IntelliJ IDEA+mavena+redis 项目技术(必填) ...是否原创(转载必填原文地址) https://github.com/JayTange/My-Blog
MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)...
基于springBoot+mybatis的志愿者管理系统 志愿者管理,修复了一些问题,去掉没有用的文件, 加入了启动地址,用户,密码 加入的注册码的插件! 本系列环境: 环境 win11 工具 idea 2018 jdk 1.8 数据库 mysql5.5 ...
基于mybatis考试管理及成绩查询模块的设计与开发 黑马的JAVA学习路线–详解JAVA部分的学习 语言视频选择 收录专辑链接 C 张雪峰推荐选择了计算机专业之后-在大学期间卷起来-【大学生活篇】 JAVA 黑马B站视频JAVA...
郑重声明:本文分享内容来自互联网,转载目的在于传递更多信息,帮助大家,并不代表本人赞同其观点和 对其真实性负责。如涉及作品内容、版权和其它问题,请在七日内与本人联系,我将在第一时间删除内容! [声明]本...
版权声明:本文为CSDN博主「Android毕业设计源码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u014388322/article/details/132872676
java 源码分析 简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 ...本文为原创文章,转载请附上原文出处链接:
【标题】:“JAVA OA平台源码(转载)SPRING BOOT...” 这个开源项目是一个基于Java技术的OA(Office Automation)管理系统的源代码实现,利用了Spring Boot框架进行开发。Spring Boot是Spring生态中的一个核心组件...
SSM整合指的是Spring、SpringMVC和MyBatis三个开源框架的集成,是Java后端开发中的常见技术栈。这一体系结构为开发者提供了强大的控制层、服务层和数据访问层的支持,使得企业级应用的开发更为高效和便捷。下面将...
3. **MyBatis**:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码分离,使得SQL与Java代码更易于...
基于springboot、mybatis、ehcache、thymeleaf、bootstrap做的博客系统,完美自适应,支持markdown编辑器 项目描述 项目基于spring boot和thymeleaf编写的一...是否原创(转载必填原文地址) 互联网源码+二次开发
spring+spring mvc+mybatis+bootstrap+jquery+struts2+hibernate 数据库文件 见压缩包 jar包文件 见压缩包 运行视频 无 是否原创(转载必填原文地址) 是 运行截图(必填) 注意事项 前端教师和...
项目使用java SpringMVC、springboot mybatis、layui为核心技术编写 ———————————————— 版权声明:本文为CSDN博主「java李阳勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本...
基于ssm的相亲网,仅供参考,转载代码请表明最代码地址和作者-程序猿全敏 运行环境 jdk7+tomcat7+mysql+eclipse 项目技术(必填) spring+spring mvc+mybatis+jquery 数据库文件 链接:...
版权声明:本文为CSDN博主「java李阳勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_39709134/article/details/116724488