Spring配置Mybaits有三种方法:
先做前驱的设置
<context:component-scan base-package="com.xiaonuo.*" /> <context:property-placeholder location="db.properties" /> <!--配置连接池--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <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="maxActive" value="10" /> <property name="maxIdle" value="5" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 加载mybatis的配置文件 <property name="configLocation" value="mybatis_config.xml" />--> <!-- 数据源 --> <property name="dataSource" ref="dataSource" /> <!--加载xml--> <property name="mapperLocations" value="classpath:Mapper/*.xml" /> </bean>
第一种方法:
<!--第一种方法 创建DAO去管理--> <bean id="ordersMapper" class="com.xiaonuo.Impl.OrdersImpl" > <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean>
继承 SqlSessionDaoSupport 直接获取sqlsession
public class OrdersImpl extends SqlSessionDaoSupport implements OrdersMapper { @Override public List<User_Items> selectUserItems() { return null; } @Override public List<User_Orderdetail> selectUserOrderdetail(User user) { SqlSession sqlSession = super.getSqlSession(); System.out.println(123); OrdersMapper mapper = sqlSession.getMapper(OrdersMapper.class); List<User_Orderdetail> user_orderdetails = mapper.selectUserOrderdetail(user); return user_orderdetails; } }
第二种方法:
<!--第二种方法 直接用spring来管理mybatis的实现类--> <bean id="ordersMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> <property name="mapperInterface" value="com.xiaonuo.Interface.OrdersMapper" /> </bean>
直接帮你写好了方法
控制层:
@Controller("ordersImpl") public class OrdersServiesImpl implements OrdersMapper { @Resource(name = "ordersMapper") private OrdersMapper ordersMapper; @Override public List<User_Items> selectUserItems() { return null; } @Override public List<User_Orderdetail> selectUserOrderdetail(User user) { System.out.println("进入控制层了"); List<User_Orderdetail> user_orderdetails = ordersMapper.selectUserOrderdetail(user); return user_orderdetails; } }
测试方法:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicontext.xml"); OrdersMapper ordersImpl = (OrdersMapper)context.getBean("ordersImpl"); User user1 = (User)context.getBean("user"); user1.setUser_name("张"); user1.setUser_sex('1'); List<User_Orderdetail> user_orderdetails = ordersImpl.selectUserOrderdetail(user1); for (User_Orderdetail user_orderdetail : user_orderdetails) { System.out.print(user_orderdetail.getOrders_id() +" " + user_orderdetail.getUser().getUser_name() +" " + user_orderdetail.getUser().getUser_sex()+" "); System.out.print(user_orderdetail.getNumber()+" "+user_orderdetail.getCreateTime()); List<Items> itemsList = user_orderdetail.getItemsList(); for (Items items : itemsList) { System.out.print(items.getItems_name()+" "+items.getItems_price()+" "+items.getItems_detail()); } System.out.println(); }
第三种方法:
由于第二种是方法是一个方法要生成一个Mapper 所以采用第三种自动生成的方法
<!--第三种方式生成mapper对象 批量生成的Mapper对在SpringIOC中的id的默认值就是接口的名字(接口名=id值) bean名字首字母是小写--> <bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <property name="basePackage" value="com.xiaonuo.Interface" /> </bean> <bean id="user" class="com.xiaonuo.pojo.User" />