SpringMVC+Maven+FreeMarker+MyBatis 使用

由于项目需要转手做Java开发,对公司的项目了解之后,自己配置了一个简单的页面。
其中使用到的技术主要有:

  • Spring MVC
  • FreeMarker
  • MyBatis
  • Maven
  • Ajax

MyBatis

以上都已经了解过,这里整理一下项目中MyBatis的使用。

参考:http://www.cnblogs.com/xdp-gacl/p/4271627.html

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

使用mybatis作为持久层框架,将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。将查询的结果集,自动映射成java对象。

需要

spring-dao.xml:

  • 1.数据库连接池;
  • 2.sqlsessisonFactory对象,扫描实体类,mapper文件;
  • 3.dao接口包,配置扫描dao接口包,动态时间dao接口,并注入到spring容器

实体类:UserEntity.java
表单类:UserForm.java与实体类对应
接口类:UserDao.java
映射文件UserMapper.xml:执行sql的语句实现Dao类
Service类:UserService.java

MyBatis两种实现方式,

基于XML(userMapper.xml):String statement = "me.gacl.mapping.userMapper.deleteUser";
基于注解(UserMapperI.java): UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);

typeAliasesPackage是对扫描的包使用别名:为com.yjy.bsms.entity包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名
比如com.yjy.bsms.entity.UserEntity这个实体类的别名就会被设置成UserEntity

<property name="typeAliasesPackage" value="com.yjy.bsms.entity" />

Mybatis解决实体类中的属性名和表中的字段名不一致

  • 解决办法一:
    通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。

  • 解决办法二:
    通过来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的

MyBatis多表查询

MyBatis中使用collection标签来解决一对多的关联查询,ofType属性指定集合中元素的对象类型

    <resultMap type="me.gacl.domain.Classes" id="ClassResultMap3">
        <id property="id" column="c_id"/>
        <result property="name" column="c_name"/>
        <association property="teacher" column="teacher_id" javaType="me.gacl.domain.Teacher">
            <id property="id" column="t_id"/>
            <result property="name" column="t_name"/>
        association>
        
        <collection property="students" ofType="me.gacl.domain.Student">
            <id property="id" column="s_id"/>
            <result property="name" column="s_name"/>
        collection>
    resultMap>

你可能感兴趣的:(笔记)