mybatis的配置文件
mybatis的配置文件有两种:
1.主配置文件
2.sql映射文件
mybatis的配置文件主要配置
别名
sql映射文件的位置
spring整合mybatis
需要把1数据源,2事物,3sqlsessionfactory,4动态代理对象 交给spring管理
整合需要导入的jar包
1.spring相关jar
2.mybatis的jar
3.mybatis整合spring的jar
4.数据源(spring-jdbc-5.0.11.RELEASE.jar)
5.mysql的数据库驱动(mysql-connector-java-5.1.47.jar)
整合过程
1.建表
2.定义表对应的对象,对象名和表名,属性和列名都一样,省了mybatis ,resultmap的配置
3.定义Dao对象和sql映射文件
5.定义mybatis的主配置文件
6.定义service对象,注入dao对象
7.定义spring的配置文件
注册数据库,访问数据库
注册sqlsessionfactory对象,创建sqlsessionfactory对象
注册动态代理对象,使用mubatis的动态代理生成dao对象
注册自定义的service对象,注入dao对象。
demo
package com.cn.vo; public class Student { private Integer id; private String name; private Integer age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; } } package com.cn.dao; import com.cn.vo.Student; public interface StudentDao { int insertStud(Student stu); } <?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.cn.dao.StudentDao"> <!-- SQL语句 --> <insert id="insertStud"> insert into student (name,age) values (#{name},#{age}) </insert> </mapper> <?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> <!-- 表示这个包下的所有类的 类名就是别名 --> <package name="com.cn.vo"/> </typeAliases> <!-- sql映射文件的位置 --> <mappers> <!-- name 是dao接口的包名,表示 这个包下的所有映射文件都能找到 要求:1.sql映射文件名和dao接口名一样 2.sql映射文件和dao接口在同一目录 --> <package name="com.cn.dao"/> </mappers> <!-- 数据源和事物 不需要了 --> </configuration> package com.cn.service; import com.cn.vo.Student; public interface StudentService { int addStu(Student stu); } package com.cn.service; import com.cn.dao.StudentDao; import com.cn.vo.Student; public class StudentServiceImpl implements StudentService{ private StudentDao sDao ; @Override public int addStu(Student stu) { return sDao.insertStud(stu); } public StudentDao getsDao() { return sDao; } public void setsDao(StudentDao sDao) { this.sDao = sDao; } } <?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:aop="http://www.springframework.org/schema/aop" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd" > <!-- 注册数据源 3个数据源 ①spring提供的 --> <bean id ="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 设置注入,提供数据库的连接信息 --> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/> <property name="username" value="root"/> <property name="password" value="admin"/> </bean> <!--和mybatis有关的 注册SqlSessionFactoryBean 单独使用过 mybatis的时候,创建SqlSessionFactoryBean 需要读主配置文件的。主配置文件包括 别名,sql映射文件的位置,数据源。 现在需要将数据源信息赋值 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="myDataSource"/> <!-- 指定mybatis主配置文件的位置 classpath spring 遇到这个,就会转为当前的类路径src下 --> <property name="configLocation" value="classpath:mybatis.xml"/> </bean> <!-- 注册动态代理对象 使用mybatis的动态代理技术,创建Dao对象 这个id不需要。因为这个类是产生dao对象的,代码中不会用到的 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 配置 sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 告诉这个类,去哪里找dao接口。配置dao接口所在的包名 --> <property name="basePackage" value="com.cn.dao"/> </bean> <!-- 注册service对象 --> <bean id="myService" class="com.cn.service.StudentServiceImpl"> <!-- 默认 创建的dao对象 是类名 首字母小写 例外: 当类名有两个大写字母时,此时创建的 就是赋值给 类名 --> <property name="sDao" ref="studentDao"/> </bean> </beans> package com.cn.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cn.service.StudentService; import com.cn.vo.Student; public class Test { public static void main(String[] args) { String resource = "applicationContext.xml"; ApplicationContext ac = new ClassPathXmlApplicationContext(resource); StudentService service= (StudentService) ac.getBean("myService"); Student stu = new Student(); stu.setName("zhangsan"); stu.setAge(24); service.addStu(stu); } }
package com.cn.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cn.service.StudentService; import com.cn.vo.Student; public class Test { public static void main(String[] args) { String resource = "applicationContext.xml"; ApplicationContext ac = new ClassPathXmlApplicationContext(resource); StudentService service= (StudentService) ac.getBean("myService"); Student stu = new Student(); stu.setName("zhangsan1"); stu.setAge(24); // service.addStu(stu); String[] strs = ac.getBeanDefinitionNames(); for (String s : strs) { System.out.println(s); } } } myDataSource sqlSessionFactory org.mybatis.spring.mapper.MapperScannerConfigurer#0 myService studentDao org.springframework.context.annotation.internalConfigurationAnnotationProcessor org.springframework.context.annotation.internalAutowiredAnnotationProcessor org.springframework.context.annotation.internalRequiredAnnotationProcessor org.springframework.context.annotation.internalCommonAnnotationProcessor org.springframework.context.event.internalEventListenerProcessor org.springframework.context.event.internalEventListenerFactory
拆出来数据库的配置
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/test jdbc.user=root jdbc.pwd=admin <!-- 引入属性配置文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 注册数据源 3个数据源 ①spring提供的 --> <bean id ="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 设置注入,提供数据库的连接信息 --> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </bean>
目录
其他的数据源
上面的数据源并不是数据库连接池
BDCP
导入两个JAR包
<!-- 注册数据源 dbcp连接池 --> <bean id ="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 设置注入,提供数据库的连接信息 --> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </bean>
c3p0
<!-- 注册数据源 c3p0连接池 --> <bean id ="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 设置注入,提供数据库的连接信息 --> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </bean>