1. Diagrama de estructura del proyecto
2. Paquete Jar
1. La versión del controlador de la base de datos MySQL debe ser 5.1.46 y superior
2. El cuadro rojo es el
archivo de configuración de primavera necesario
beans.xml del paquete Jar
1. Marcador de posición $ {}, no Escritura incorrecta
2. La <? Xml version = "1.0" encoding = "UTF-8"?> Del archivo xml debe estar en la primera línea; de lo contrario, se informará un error
3. No puede haber espacios entre el controlador y la URL
4. Se requiere el nombre de usuario y la contraseña de la base de datos Escribe bien
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 加载do.properties文件 -->
<context:property-placeholder location="classpath:do.properties"/>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<!-- 数据库驱动 -->
<property name="driverClassName" value="${jdbc.driver}" />
<!-- 连接字符串 -->
<property name="url" value="${jdbc.url}" />
<!-- 数据库用户名和密码 -->
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxTotal" value="${jdbc.maxTotal}" />
<property name="maxIdle" value="${jdbc.maxIdle}" />
<property name="initialSize" value="${jdbc.initialSize}" />
</bean>
<!-- 声明事务管理器,依赖于数据源 -->
<bean
id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 基于annotation(注解)的声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 配置mybatis工厂 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 加载mybatis配置文件 -->
<property name="configLocation"
value="classpath:mybatis-config.xml" />
</bean>
<!-- 传统Dao模式开发-->
<bean id="customerDao" class="com.itheima.dao.impl.CustomerDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<bean id="customerMapper"
class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- value=包+接口 -->
<property name="mapperInterface"
value="com.mapper.CustomerMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!-- mapper代理开发(基于MapperScannerConfigurer)-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 加载包;value=包名(不要写到类);不必引用sqlSessionFactory-->
<property name="basePackage" value="com.mapper" />
</bean>
</beans>
Notas y especificaciones de desarrollo del agente del asignador (MFB y MSC):
1. El nombre de la interfaz del asignador debe ser coherente con el archivo asignado por el asignador.
2. El espacio de nombres en el archivo Mapper.xml es el mismo que la ruta de clase de la interfaz del asignador (es decir, el archivo de interfaz y la asignación El archivo debe colocarse en el mismo paquete)
Si se siguen los dos anteriores, no es necesario introducir mapper.xml en mybatis-config
3. El nombre del método en la interfaz Mapper debe ser coherente con cada declaración de ejecución definida en mapper.xml
4. El parámetro debe ser consistente con parameterType
5. El tipo de retorno debe ser consistente con resultType
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/emis
jdbc.username=root
jdbc.password=root
jdbc.maxTotal=30
jdbc.maxIdle=10
jdbc.initialSize=5
mybatis-conlig.xml
<?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>
<mappers>
<mapper resource="mapper/Customer.xml"/> <!-- 加载映射文件 -->
</mappers>
</configuration>
Archivo de asignación Customer.xml
<?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="mc">
<select id="findID" parameterType="Integer"
resultType="com.itheima.po.Customer">
select * from customer where id=#{id}
</select>
</mapper>
El nombre del atributo de la clase de entidad
debe ser coherente con el nombre del atributo en la base de datos
package com.itheima.po;
public class Customer {
private int id;
private String name;
private String jobs;
private String phone;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String toString()
{
return id+","+name+","+jobs+","+phone+"\n";
}
}
//Dao接口
package com.itheima.dao;
import com.itheima.po.Customer;
public interface CustomerDao {
public Customer findID(Integer id);
}
//Dao实现类
package com.itheima.dao.impl;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import com.itheima.dao.CustomerDao;
import com.itheima.po.Customer;
public class CustomerDaoImpl extends SqlSessionDaoSupport
implements CustomerDao{
@Override
public Customer findID(Integer id) {
return
this.getSqlSession().selectOne
("mc.findID", id); //命名空间+SQL执行语句的id
}
}
Clase de prueba
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.itheima.dao.CustomerDao;
import com.itheima.po.Customer;
import com.mapper.CustomerMapper;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("beans.xml");
//传统的Dao模式
//根据容器中的id获取bean
// CustomerDao cd = (CustomerDao) applicationContext.getBean("customerDao");
//
// Customer c = cd.findID(1);
// mapper接口开发(MapperFactoryBean和MapperScannerConfigurer类)
// 通过className.class获取bean
CustomerMapper cm = applicationContext.getBean(CustomerMapper.class);
Customer c = cm.findId(1);
System.out.println(c);
}
}