Spring ---Mabatis
1。Mybatis 的环境搭建流程: 1.导入包jar 2.创建实体类 3.创建配置文件 4.写接口,接口映射器 5.测试
1.导入包:1.Junit.jar 2 mysql-connector-java.jar 3.mybatis.jar 4.spring-jdbc.jar 5.spring-webmvc.jar 6.aspectjweaver.jar 7.mybatis-srping.jar
2.编写配置文件:
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!-- 增加支持注解配置--> <context:annotation-config/> <!-- 增加支持包自动扫描--> <context:component-scan base-package="com.sun.dao"/> <!-- 创建数据源的连接参数--> <!-- C3P3 DBCP DRuid--> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> //DriverManagerDataSource类 C3P0 DBCP BasicDataSource类 (包支持jar spring-jdbc commons-dbcp commons-pool) <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useSSL=false"/> //出错原因:第一个次:jdbc:mysql: 写反了 <property name="username" value="root"/> 第二次:数据库问号后面加/。 mybatis?useUnicode=true <property name="password" value="12345"/> </bean> <!-- 创建mybatis的工厂方法--> <bean id="sqlsessionfactorybean" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 导入数据源--> <property name="dataSource" ref="datasource"/> //引用类型用 ref 不能写成值类型 <!-- 导入配置文件中的映射器路径--> <property name="mapperLocations" value="classpath:mapper/*.xml"/> 路径格式:注意是路径 /反斜杠 *代表通配符 **代表目录结构 可以放在resource 和java目录的任何目录下,没有接口类和映射名的要求了。 <property name="typeAliasesPackage" value="com.sun.pojo"/> 别名: value包下的所有类的类名 自动成为简写名称 com.sun.pojo.User == User <!-- 导入mybatis的配置文件....<property name="configLocation"--> </bean> <!-- 创建SqlsessiondTemplate--> <bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">//SqlSessionTemplate类没有set方法,只能构造方法注入。构造方法注入有3种:第一种: index=0 标注 第二种:type=“java.lang.String” value="123" 第三种:name= valur|ref= <!-- 只有构造器注入--> <constructor-arg index="0" ref="sqlsessionfactorybean"/> </bean> <!-- 注册数据库查找类的Bean--> <bean id="userdaoimpl" class="com.sun.dao.UserDaoImpl"> // 注册mybatia接口实现类 属性注入 Sqlsession 不知道还需不需要手动关闭连接? 不需要了,刚试了 <property name="sessionTemplate" ref="sqlsession"/> // set注入sqlsession this.sqlsession=sqlsession </bean> </beans>
SelectList 和getMapper对比:
public List<User> getUserList() { List<User> userList = sessionTemplate.selectList("com.sun.dao.UserDao.getUserList"); return userList; }
public List<User> getUserList() { // List<User> userList = sessionTemplate.selectList("com.sun.dao.UserDao.getUserList");// RowBounds 还有JavaAssist 好难。 UserDao mapper = sessionTemplate.getMapper(UserDao.class); //代理对象 List<User> userList = mapper.getUserList(); return userList; }