php网站开发需要学什么,推广网站的方式,二手交易平台 网站开发,网站定制目录
1、梳理整合思路
2、整合实现
2.1 环境搭建
2.2 案例 1、梳理整合思路
将MyBatis的DataSource交给Spring IoC容器创建并管理#xff0c;使用第三方数据库连接池(Druid#xff0c;C3P0等)代替MyBatis内置的数据库连接池将MyBatis的SqlSessionFactory交给Spring IoC容…目录
1、梳理整合思路
2、整合实现
2.1 环境搭建
2.2 案例 1、梳理整合思路
将MyBatis的DataSource交给Spring IoC容器创建并管理使用第三方数据库连接池(DruidC3P0等)代替MyBatis内置的数据库连接池将MyBatis的SqlSessionFactory交给Spring IoC容器创建并管理使用spring-mybatis整合jar包中提供的SqlSessionFactoryBean类代替项目中的MyBatisUtil工具类将MyBatis的接口代理方式生成的实现类交给Spring IoC容器创建并管理
mybatis框架开发步骤 定义mapper接口定义方法 定义mapper.xml映射文件 创建mybatis核心配置文件 创建SqlSession对象使用该对象生成mapper接口的代理对象执行方法 spring整合mybatis的核心就是把mybatis开发用到的对象交由spring容器ioc来创建这样就做到了整合的目的。 在开发中我们一般不使用mybatis自带的数据源而是使用别的数据源比如c3p0dbcp等本人使用的是阿里的druid数据源。
2、整合实现
2.1 环境搭建
导入相关依赖
dependencies!--单元测试--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependency!--spring核心ioc--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.5.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.2.5.RELEASE/version/dependency!--mybatis依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.1/version/dependency!--mybatis和spring集成的依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion1.3.1/version/dependency!--mysql驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.9/version/dependency!--阿里公司的数据库连接池--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.12/version/dependency/dependenciesbuild!--目的是把src/main/java目录中的xml文件包含到输出结果中。输出到classes目录中--resourcesresourcedirectorysrc/main/java/directory!--所在的目录--includes!--包括目录下的.properties,.xml 文件都会扫描到--include**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resource/resources!--指定jdk的版本--pluginspluginartifactIdmaven-compiler-plugin/artifactIdversion3.1/versionconfigurationsource1.8/sourcetarget1.8/target/configuration/plugin/plugins/build
重点是注意resources标签的配置很多人都是在这里出错导致程序运行报错找不到mapper.xml文件
2.2 案例 本案例从student表中查询学生和新增学生功能。 //实体类Student
public class Student {private int stuNo;private String stuName;private int cardID;private int classID;public Student() {}public Student(int stuNo, String stuName, int cardID, int classID) {this.stuNo stuNo;this.stuName stuName;this.cardID cardID;this.classID classID;}public int getStuNo() {return stuNo;}public void setStuNo(int stuNo) {this.stuNo stuNo;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName stuName;}public int getCardID() {return cardID;}public void setCardID(int cardID) {this.cardID cardID;}public int getClassID() {return classID;}public void setClassID(int classID) {this.classID classID;}Overridepublic String toString() {return Student{ stuNo stuNo , stuName stuName \ , cardID cardID , classID classID };}
} mapper接口 public interface StudentMapper {//查询全部ListStudent queryAll();//新增学生void addStudent(Student student);
} mapper.xml映射文件 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.mms.mapper.StudentMapper!--查询全部--select idqueryAll resultTypeStudentselect * from student/select!--新增学生--insert idaddStudent parameterTypeStudentinsert into student (stuno,stuname,cardid,classid)values (#{stuNo},#{stuName},#{cardID},#{classID})/insert
/mapper service接口 public interface IStudentService {ListStudent queryAll();void addStudent(Student student);
} service实现类 public class StudentServiceImpl implements IStudentService {//mapper属性private StudentMapper mapper;//set注入给mapper对象赋值public void setMapper(StudentMapper mapper) {this.mapper mapper;}Overridepublic ListStudent queryAll() {return mapper.queryAll();}Overridepublic void addStudent(Student student) {mapper.addStudent(student);}
} mybatis核心配置文件 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configurationtypeAliases!--批量设置别名会自动的将该包下的所有类定义了别名别名就是其自身且不区分大小--package namecom.mms.entity //typeAliases!--加载映射配置文件--mappersmapper resourcecom/mms/mapper/studentMapper.xml/mapper/mappers
/configuration
在这里由于数据源对象我们是交由spring容器托管了因此mybatsi核心配置文件中就没有environments标签了。 spring配置文件 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd!--加载数据库配置文件--context:property-placeholder locationclasspath:db.properties/!--声明数据源--bean idmyDataSource classcom.alibaba.druid.pool.DruidDataSource init-methodinit destroy-methodclose!--set注入给数据库信息赋值不需要指定驱动类sprinf根据url自动识别property nameurl valuejdbc:mysql://localhost:3306/test?characterEncodingutf8amp;useSSLtrueamp;serverTimezoneUTC/property nameusername valueroot/property namepassword value333/--!--使用db配置文件读取数据库信息格式类似el表达式--property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//bean!--声明的是mybatis中提供的SqlSessionFactoryBean类这个类内部创建SqlSessionFactory的--bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean!--set注入赋值--!--set注入把数据库连接池付给了dataSource属性--property namedataSource refmyDataSource /!--mybatis主配置文件的位置configLocation属性是Resource类型读取配置文件它的赋值使用value指定文件的路径使用classpath:表示文件的位置--property nameconfigLocation valueclasspath:mybatis-config.xml //bean!--创建dao对象使用SqlSession的getMapperStudentDao.classMapperScannerConfigurer:在内部调用getMapper()生成每个dao接口的代理对象。--bean classorg.mybatis.spring.mapper.MapperScannerConfigurer!--指定SqlSessionFactory对象的id--property namesqlSessionFactoryBeanName valuesqlSessionFactory /!--指定包名 包名是dao接口所在的包名。MapperScannerConfigurer会扫描这个包中的所有接口把每个接口都执行一次getMapper()方法得到每个接口的dao对象。创建好的dao对象放入到spring的容器中的。 dao对象的默认名称是 接口名首字母小写--property namebasePackage valuecom.mms.mapper//bean!--声明service--bean idstudentServiceImpl classcom.mms.service.impl.StudentServiceImplproperty namemapper refstudentMapper//bean
/beans 数据库配置文件 url jdbc:mysql://localhost:3306/Xxx?characterEncodingutf8useSSLtrueserverTimezoneUTC
username Xxx
password Xxx
测试 //执行查询全部不使用serviceTestpublic void test02() {String config applicationContext.xml;ApplicationContext ac new ClassPathXmlApplicationContext(config);//获取mapper的代理对象StudentMapper mapper (StudentMapper) ac.getBean(studentMapper);ListStudent students mapper.queryAll();for (Student student : students) {System.out.println(student---student);}}//执行增加学生使用serviceTestpublic void test03() {String config applicationContext.xml;ApplicationContext ac new ClassPathXmlApplicationContext(config);//获取service对象IStudentService service (IStudentService) ac.getBean(studentServiceImpl);Student student new Student();student.setStuName(呵呵);student.setStuNo(1111);student.setCardID(1115);student.setClassID(1);service.addStudent(student);}