Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常
时间:2022-03-10 18:19
忙活了大半天,饭也没顾得上吃,哎许久不动手,一动手就出事,下面请看今天的重头戏,额吃个饭回来再发了!
1.整体结构
2.准备工作
数据库:
--Mysql 5.6
创建数据库 wolf
CREATE DATABASE wolf;
创建用户表 user
create table user( id int AUTO_INCREMENT primary key, name varchar(25) not null, pwd varchar(20) not null, create_time date )
向表中插入测试数据
insert into user(name,pwd,create_time) values("wangxin","123","2014-02-14"); insert into user(name,pwd,create_time) values("Tom","123456","2014-02-14"); insert into user(name,pwd,create_time) values("Jack","123","2014-02-14"); insert into user(name,pwd,create_time) values("Bob","123","2014-02-14");
所需Jar包
我们先文字,后图吧,细心的你,看完所有内容会发现,这里的东西在哪里也有哦,别想多了,肯定在这里,你猜猜猜..
jar:
1.驱动:mysql-connector-java-5.1.7-bin.jar
2.jstl 的
jstl.jar
standard.jar
3.spring 的
spring-aop-4.0.0.M2.jar
spring-beans-4.0.0.M2.jar
spring-context-4.0.0.M2.jar
spring-core-4.0.0.M2.jar
(若出现问题,可以替换 spring-core-4.0.0.RELEASE.jar)
spring-expression-4.0.0.M2.jar
spring-jdbc-4.0.0.M2.jar
spring-test-4.0.0.M2.jar
spring-tx-4.0.0.M2.jar
4.mybatis 的
mybatis-3.1.1.jar
log4j-1.2.16.jar
mybatis-spring-1.2.1.jar
5.以及spring-depend
aopalliance-1.0.jar
cglib-nodep-2.1_3.jar
commons-logging-1.1.1.jar
6.web 相关的
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar
下面是jar包在项目中的结构图
3.项目代码及简析
Bean类
User.java
package com.springmvc_mybatis.bean; import java.io.Serializable; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer id; private String name; private String password; @DateTimeFormat(pattern="yyyy-MM-dd") private Date time; public User() { super(); } public User(String name, String password) { super(); this.name = name; this.password = password; } public User(Integer id, String name, String password, Date time) { super(); this.id = id; this.name = name; this.password = password; this.time = time; } 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 String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", password=" + password + ", time=" + time + "]"; } }
接口(如果你用了mappers 那么接口以及配置文件最后都带有Mapper,且名字一致)
UserMapper.java
package com.springmvc_mybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.springmvc_mybatis.bean.User; //userMapper只能传入一个参数,多个的话需要注解 public interface UserMapper { //value 必须与Bean 属性一致! User login(@Param(value = "name") String name, @Param(value = "password") String password); List<User> getAllUsers(); }
UserMapper.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="com.springmvc_mybatis.mapper.UserMapper"> <resultMap type="User" id="userResult"> <result column="id" property="id" /> <result column="name" property="name" /> <result column="pwd" property="password" /> <result column="create_time" property="time" /> </resultMap> <select id="login" resultMap="userResult"> select * from user where name=#{name} and pwd=#{password} </select> <select id="getAllUsers" resultMap="userResult"> select * from user </select> </mapper> <!-- error ,,,,resultMap wrong to resultType... -->
下面该干嘛了?╮(╯▽╰)╭好吧,我们先来配置下在木有服务器的环境下,看看Mybatis是否能正确运行。
所以我们先来配置哪个呢?
哦是她,
spring 配置
beans_wolf.xml 哈哈,wolf 哦,够那个啥吧。。。
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 1. 数据源 : DriverManagerDataSource --> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3307/wolf"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <!-- 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource / typeAliasesPackage --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="datasource"/> <property name="typeAliasesPackage" value="com.springmvc_mybatis.bean"/> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean> <!-- 3. mybatis自动扫描加载Sql映射文件 : MapperScannerConfigurer sqlSessionFactory / basePackage --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.springmvc_mybatis.mapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> <!-- 4. 事务管理 : DataSourceTransactionManager --> <bean id="manager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="datasource"/> </bean> <!-- 5. 使用声明式事务 --> <tx:annotation-driven transaction-manager="manager" /> </beans>
Spring 基本配置都在上面咯,数据库如果想读入配置文件的话,自己新建属性文件配置下下了
哦,差点过了,现在我们就可以来测试下咯,后面的mvc配置主要是为web服务的哈,不急!!
TestSimpleMyBatis.java
package com.springmvc_mybatis.test; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.springmvc_mybatis.bean.User; import com.springmvc_mybatis.mapper.UserMapper; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/beans_wolf.xml") public class TestSimpleMyBatis { @Autowired private UserMapper userMapper; @Test public void findAll() { List<User> users = userMapper.getAllUsers(); System.out.println(users); } @Test public void login() { // User user = new User(null, "wx", "123456", new Date()); // User user = new User(null, "wangxin", "123456", new Date()); // User loginExit = userMapper.login(user); // User loginExit = userMapper.login("wx", "123456"); User loginExit = userMapper.login("wangxin", "123456"); if (loginExit == null) { System.out.println("用户不存在"); } else { System.out.println(loginExit); System.out.println("登录成功!"); } } }
如果你成功了,恭喜你可以继续咯!如果出现问题那么尝试在配置一个哈,
mybatis-config.xml,特意把她放到下下个咯,就看你细心嘛
Let`s go...
网友的一些问题及解决方法。。。 另外:jsp 文件的位置要特别注意! index,一般在WebContent下!!! 那个xml文件出现问题一般是你的dtd约束,taglib等没弄好,自己细细品味下嘛,不知道度娘娘,实在不行在一起讨论哦! 5.完整Demo项目下载地址 水平不咋地,就爱瞎折腾,欢迎大家一起折腾( ⊙ o ⊙ )啊! 有问题,请留言! 或发送邮件至 wx_cs_db_88@163.com 本文出自 “” 博客,请务必保留此出处 Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常,布布扣,bubuko.com<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource"/>
<property name="typeAliasesPackage" value="com.springmvc_mybatis.bean"/>
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
Mapped Statements collection does not contain value for后面是什么类什么方法之类的:
错误原因有几种:
1、mapper.xml中没有加入namespace !!!!
2、mapper.xml中的方法和接口mapper的方法不对应 !!!
3、mapper.xml没有加入到mybatis-config.xml中(即总的配置文件),例外:配置了mapper文件的包路径的除外 !!!
4、mapper.xml文件名和所写的mapper名称不相同。 !!
5.java文件和xml文件的名称不一致 !
6.可能是你的controller 或者说是handler 有问题!!
完整登录及list查询,无错误,几经验证!共同学习!