概述
文章目录
- mybatis 的运用
- 1.mybatis的了解
- 1.1 mybatis是ORM持久层框架,MyBatis是针对数据库交互的一个辅助框架,也是对jdbc做了的简单封装,以xml配置代替Java代码来管理数据库的交互细节.
- 1.2 MyBatis可以使用简单的**XML或注解**用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.
- 2.mybatis的映射器
- 2.1 SpringAOP 面向切面编程 --底层代理模式(额外产出一些子类)
- 2.2高级查询
- 2.2.1 like(模糊查询) 使用concat
- 2.2.2 注意转义符的运用
- 3.mybatis的嵌套结果 嵌套查询
- 3.1 多对一的 嵌套结果 嵌套查询
- 3.2 一对多的嵌套结果 嵌套查询 (limit 分页用于嵌套查询,不能用于嵌套结果)
- 4.SSM 框架的搭建
- 4.1普通的web项目
- 4.1.1 结构图
- 4.1.2 applicationContext.xml 的配置
- 4.1.3 applicationContext-mvc.xml 的配置
- 4.1.4web.xml的配置
mybatis 的运用
1.mybatis的了解
1.1 mybatis是ORM持久层框架,MyBatis是针对数据库交互的一个辅助框架,也是对jdbc做了的简单封装,以xml配置代替Java代码来管理数据库的交互细节.
1.2 MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.
2.mybatis的映射器
2.1 SpringAOP 面向切面编程 --底层代理模式(额外产出一些子类)
MyBatis基于动态代理机制,让我们无需再编写Dao的实现。
传统Dao接口,现在名称统一以Mapper结尾,还有我们映射器配置文件要和映射器在同一个包.
IDeptDao---->DeptMapper.java—DeptMapper.xml(namespace直接写DeptMapper.java的全限定名)
2.2高级查询
2.2.1 like(模糊查询) 使用concat
<if test="name!=null">
and name like concat('%',#{name},'%')
</if>
2.2.2 注意转义符的运用
方案1:转义符号
<if test="maxSalePrice != null">
<!--and saleprice <= #{maxSalePrice}
</if>
方案2:cdata 的区域编译的时候便不会读取
xml
<![CDATA[
and saleprice <= #{maxSalePrice}
]]>
3.mybatis的嵌套结果 嵌套查询
3.1 多对一的 嵌套结果 嵌套查询
嵌套查询和嵌套结果
<mapper namespace="cn.itsource._06_manytoone1.EmployeeMapper">
嵌套结果
<!--<resultMap id="employeeMap" type="employee">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<result property="age" column="age"></result>
<association property="department" javaType="Department">
<id property="id" column="did"></id>
<result property="name" column="dname"></result>
</association>
</resultMap>
<select id="findAll" resultMap="employeeMap">
SELECT
e.id,
e. NAME,
e.age,
d.id did,
d. NAME dname
FROM
t_employee e
JOIN t_department d ON e.did = d.id
</select>-->
嵌套查询
<resultMap id="employeeMap" type="employee">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<result property="age" column="age"></result>
<association property="department" javaType="Department" column="did" select="findDeptById">
</association>
</resultMap>
<select id="findAll" resultMap="employeeMap">
SELECT
e.id,
e. NAME,
e.age,
e.did
FROM
t_employee e
</select>
<select id="findDeptById" parameterType="long" resultType="department">
select * from t_department where id=#{id}
</select>
</mapper>
3.2 一对多的嵌套结果 嵌套查询 (limit 分页用于嵌套查询,不能用于嵌套结果)
嵌套结果
<!--<resultMap id="deptMap" type="department">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<collection property="employees" javaType="arraylist" ofType="Employee" >
<id property="id" column="eid"></id>
<result property="name" column="ename"></result>
<result property="age" column="eage"></result>
</collection>
</resultMap>
<select id="loadAll" resultMap="deptMap">
SELECT
d.id,
d. NAME,
e.id eid,
e. NAME ename,
e.age eage
FROM
t_department d
JOIN t_employee e ON d.id = e.did
</select>-->
嵌套查询
<resultMap id="deptMap" type="department">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<collection property="employees" column="id" javaType="arraylist" ofType="Employee" select="findEmptById"></collection>
</resultMap>
<select id="loadAll" resultMap="deptMap">
select t.id,t.name from t_department t
limit 0,1
</select>
<select id="findEmptById" parameterType="long" resultType="employee">
select * from t_employee where did =#{id}
</select>
4.SSM 框架的搭建
4.1普通的web项目
4.1.1 结构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M1vAikJY-1574910242562)(C:UsersAdministratorAppDataRoamingTyporatypora-user-images1574909718440.png)]
4.1.2 applicationContext.xml 的配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 配置整合mybatis过程 -->
<!-- 1.配置数据库相关参数properties的属性:${url} -->
<context:property-placeholder location="classpath:jdbc.properties" />
<context:component-scan base-package="cn.itsource.ssm.service"/>
<!-- 2.数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- 配置连接池属性 -->
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="mapperLocations" value="classpath:cn/itsource/ssm/mapper/*Mapper.xml" />
<!-- 配置mybatis 类型别名 -->
<property name="typeAliasesPackage">
<value>
cn.itsource.ssm.domain
cn.itsource.ssm.query
</value>
</property>
</bean>
<!-- 4.配置扫描mapper接口包,动态实现mapper接口,注入到spring容器中 扫描 MapperScannerConfigurer-->
<!--一劳永逸-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.itsource.ssm.mapper"></property>
</bean>
<!--事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置基于注解的声明式事务 @Transactional-->
<tx:annotation-driven transaction-manager="transactionManager" />
4.1.3 applicationContext-mvc.xml 的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--扫描controller-->
<context:component-scan base-package="cn.itsource.ssm.controller" />
<!--静态资源处理-->
<mvc:default-servlet-handler />
<!--识别@requestMapper等注解支持-->
<mvc:annotation-driven />
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
4.1.4web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--配置spring-mvc 的核心控制器-->
<!--方案1:独立容器方案,spring和springmvc都有自己context-->
<!--1.1 spring容器初始化-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--1.2 配置springmvc-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--/*会拦截所有包括jsp-->
<!--/会拦截所有但是不包含jsp-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--
post请求乱码解决
get请求实在tomcat猫中配置
-->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
最后
以上就是忧心鸡为你收集整理的mybatis嵌套查询和嵌套结果 SSM 框架的集成的全部内容,希望文章能够帮你解决mybatis嵌套查询和嵌套结果 SSM 框架的集成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复