mybatis详解(四)

spring与mybatis的集成

1,新建maven的quickstart项目

2,导入需要的坐标,pom.xml

<?xml version="1.0" encoding="UTF-8"?>4.0.0com.shsxtspring_mybatis1.0-SNAPSHOTspring_mybatis<!-- FIXME change it to the project's website -->http://www.example.comUTF-81.81.8junitjunit4.12test<!-- spring 核心 jar -->org.springframeworkspring-context4.3.2.RELEASE<!-- spring 测试 jar -->org.springframeworkspring-test4.3.2.RELEASE<!-- spring jdbc -->org.springframeworkspring-jdbc4.3.2.RELEASE<!-- spring 事物 -->org.springframeworkspring-tx4.3.2.RELEASE<!-- aspectj 切面编程的 jar -->org.aspectjaspectjweaver1.8.9<!-- c3p0 连接池 -->c3p0c3p00.9.1.2<!-- mybatis -->org.mybatismybatis3.4.1org.mybatismybatis-spring1.3.0<!-- mysql 驱动包 -->mysqlmysql-connector-java5.1.39org.slf4jslf4j-log4j121.7.2org.slf4jslf4j-api1.7.2com.github.pagehelperpagehelper4.1.0org.mybatis.generatormybatis-generator-maven-plugin1.3.2src/main/resources/generatorConfig.xmltruetruespring_mybatissrc/main/resourcessrc/main/java**/*.properties**/*.xml**/*.tldfalse

3,创建resources文件夹,在该文件下创建log4j.properties和db.properties,mybatis.xml,spring.xml

log4j.properties

# Global logging configurationlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

db.properties

driver=com.mysql.jdbc.

Driverurl=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&useSSL=falsename=rootpassword=123456

mybatis.xml

<?xml version="1.0" encoding="utf-8" ?><!--分页的插件,不需要的话,该plugins可以写--><!-- com.github.pagehelper 为 PageHelper 类所在包名 --><!-- 该参数默认为 false --><!-- 设置为 true 时,会将 RowBounds 第一个参数 offset 当成 pageNum 页码使

        用 --><!-- 和 startPage 中的 pageNum 效果一样 --><!-- 该参数默认为 false --><!-- 设置为 true 时,使用 RowBounds 分页会进行 count 查询 --><!-- 设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出

    全部的结果 --><!-- (相当于没有执行分页查询,但是返回结果仍然是 Page 类型) --><!-- 3.3.0 版本可用 - 分页参数合理化,默认 false 禁用 --><!-- 启用合理化时,如果 pageNum<1 会查询第一页,如果 pageNum>pages 会

            查询最后一页 --><!-- 禁用合理化时,如果 pageNum<1 或 pageNum>pages 会返回空数据 --><!-- 3.5.0 版本可用 - 为了支持 startPage(Object params)方法 --><!-- 增加了一个`params`参数来配置参数映射,用于从 Map 或

            ServletRequest 中取值 --><!-- 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映

            射的用默认值 -->

countsql"/>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>

        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/aop

        http://www.springframework.org/schema/aop/spring-aop.xsd

        http://www.springframework.org/schema/tx

        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><!-- 扫描 com.shsxt 及其所有子包下类 --><!-- 加载 properties 配置文件 --><!-- aop --><!-- 配置数据源 --><!-- 配置 c3p0 数据源 --><!-- 配置事务管理器 --><!-- 设置事物增强 --><!-- aop 切面配置 --><!-- 配置 sqlSessionFactory--><!--

        自动扫描 com/shsxt/crm/mapper 目录下的所有 SQL 映射的 xml 文

        件, 省掉 mybatis.xml 里的手工配置

        value="classpath:com/shsxt/crm/mapper/*.xml"指的是 classpath(类路径)

        下 com.shsxt.crm.mapper 包中的所有 xml 文件

        UserMapper.xml 位于 com.shsxt.crm.mapper 包下,这样 UserMapper.xml 就可

        以被自动扫描

        --><!-- 配置扫描器 --><!-- 扫描 com.shsxt.dao 这个包以及它的子包下的所有映射接口类 -->

4,创建包,目录结构如下,暂且不需要创建包下的文件,后面会自动生成,


因为我们在pom.xml中导入了代码自动生成的插件,现在需要在resources下添加generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?><!--数据库驱动--><!--数据库链接地址账号密码--><!--生成 Model 类存放位置--><!--生成映射文件存放位置--><!--生成 dao 类存放位置-->

需要修改几个地方即可,包名需要也需要事先创建好,如果需要同时生成多个实体类可以有多个table标签



双击如下图所示的位置,即可生成文件


会自动生成如下文件


创建Userservice类

package com.shsxt.services;importcom.github.pagehelper.PageHelper;importcom.github.pagehelper.PageInfo;importcom.shsxt.dao.UserDao;importcom.shsxt.po.User;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Repository;importjava.util.List;@RepositorypublicclassUserService{        @AutowiredprivateUserDaouserDao;publicUserqueryById(Integerid){returnuserDao.queryUserById(id);        }publicPageInfo queryUserByparams(IntegerpageNum,IntegerpageSize,Stringusername){PageHelper.startPage(pageNum, pageSize);List list=userDao.queryUserByparams(username);PageInfo pageInfo=newPageInfo(list);returnpageInfo;        }}

测试

importcom.github.pagehelper.PageInfo;importcom.shsxt.po.User;importcom.shsxt.services.UserService;importorg.apache.ibatis.reflection.SystemMetaObject;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:spring.xml"} )publicclassTest{    @AutowiredprivateUserServiceuserService;    @org.junit.Testpublicvoid test01(){System.out.println(userService.queryById(1));    }}

测试结果成功


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容