思路:入口程序读spring的配置文件-配置文件注入给程序bean--程序拿到bean以操作对象的手法查出程序

入口程序HelloWorld.java

package HelloWorld;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import HelloWorld.UserDao;
import HelloWorld.User; public class HelloWorld { /**
* @param args
*/ public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:ApplicationContext.xml");
UserDao userDao=(UserDao) ctx.getBean("userDao"); User user=new User();
user.setId(1);
System.out.println(userDao.getUser(user).toString()); } }
----------------------------------------------------------------------------------------------------------------
import HelloWorld.UserDao;//把bean变成对象操作
import HelloWorld.User;//把字段变成对象操作 ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:ApplicationContext.xml");//读取spring的配置文件------1 UserDao userDao=(UserDao) ctx.getBean("userDao");//拿到配置文件的bean,并把它变成对象------2
User user=new User();
user.setId(1);//设置对象的属性,即设置字段id为1
System.out.println(userDao.getUser(user).toString());//往userDao对象的getUser方法传值,值为user
---------------------------------------------------------------------------------------------------------------- 1和2合并指向的就是ApplicationContext.xml这个文件,过去看看
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 配置数据源-->
<bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/mybatis</value>
<!--springmybaitis是我的数据库 -->
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="jdbcDataSource" />
<property name="configLocation" value="classpath:conf.xml"></property>
</bean>
<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="HelloWorld.UserDao"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean> </beans>

----------------------------------------------------------------------------------------------------------------

配合了数据源,加载了一个conf.xml,userDao这个bean在最下面

org.mybatis.spring.mapper.MapperFactoryBean好像依赖于一个jar,不然老是报

ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:ApplicationContext.xml");

其实不是程序的错,而是配置文件的错,主要是它报的错没办法指向配置文件,但是根据具体的报错信息(一行一行的看的。。。)加白度,大概了解到是配置文件里有错了,且是少了一个jar包这样的错

org.springframework.transaction-3.1.0.RC1.jar这个包

我把3.2的包下载完了,以为不会缺jar包了,可能是抄的别人代码的缘故,就是缺org.springframework.transaction-3.1.0.RC1.jar这个包,3.1的?。。。

------------------------------------------------------------------------------------------------------------------------

<property name="configLocation" value="classpath:conf.xml"></property>

红字是主线,顺着主线往下走,找conf.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>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mapper resource="HelloWorld/UserDao.xml"/>
</mappers> </configuration>
<mapper resource="HelloWorld/UserDao.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="HelloWorld.UserDao">
<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
User类就是users表所对应的实体类
-->
<!--
根据id查询得到一个user对象
-->
<select id="getUser" parameterType="int"
resultType="HelloWorld.User">
select * from users where id=#{id}
</select>
</mapper>

终于要查询了。。。

补下UserDao、User

package HelloWorld;

import HelloWorld.User;

public interface UserDao {
public User getUser(User user);
public void addUser(User user);
public void updateUser(User user);
public void deleteUser(int UserId);
}
package HelloWorld;

/**
* @author gacl
* users表所对应的实体类
*/
public class User { //实体类的属性和表的字段名称一一对应
private int id;
private String name;
private int age; 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 int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}

结构图:



查看报错就是熟悉它的过程,能学到很多东西

效果:



至少知道程序走的哪了,在哪出的错,为什么会出错。。。

最新文章

  1. vs打开项目出现“尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost:…… .要打开此项目,需要配置虚拟目录……”提示
  2. 洛谷 P3374 【模板】树状数组 1
  3. Clover:让Windows下的资源管理器具有Chrome一样的标签页
  4. ACM 关于数据输入加速
  5. Vasiliy&#39;s Multiset
  6. node.js平台下Express的session与cookie模块包的配置
  7. 通过LOGBACK实现每个类、包或自定义级别
  8. 最短路之Floyd算法
  9. javascript 面向对象(多种创建对象的方式)
  10. PowerShell-自定义函数(五)-参数互斥:ParameterSetName
  11. Windows 2012 安装 SQL Server 2012,.Net Framework 3.5安装不成的解决办法
  12. web测试笔记
  13. CEditUI 控件使用
  14. Windows10 VS2017 C++ Json解析(使用jsoncpp库)
  15. Linux硬件相关
  16. 华中农业大学第五届程序设计大赛网络同步赛-D
  17. 第三百九十一节,Django+Xadmin打造上线标准的在线教育平台—404,403,500页面配置
  18. bzoj2956: 模积和(数论)
  19. python中的引用传递,可变对象,不可变对象,list注意点
  20. js实现QQ、微信、新浪微博分享功能

热门文章

  1. java工具类获取properties文件的配置
  2. 【js】判断浏览器是否IE浏览器
  3. 【js】js中const,var,let区别
  4. 第五章:关于ESearch的应用
  5. ClassNotFoundException和 NoClassDefFoundError区别验证
  6. SSH 错误解决案例1:Read from socket failed: Connection reset by peer
  7. linux基础教程---设置文件的主人、组别
  8. IReferenceCounted DotNetty.Common
  9. INSTALL_FAILED_OLDER_SDK
  10. Android-LinearLayout布局技巧(一)