案例简介:本人现在是实习生,公司临时安排我做一个系统,要求是只要能做出来就可以,不论用什么技术实现。(当然,这只是给我们练习使用,不是作为实际的项目开发来做),从离校到现在已经快大半年的,其实好久没有像这样好好的敲代码了。之前我学的是SSH(Spring + Struts2 +Hibernate),毕业设计也是用SSH做的,由于后面去找实习接触到的很多公司都是用SSM开发的,所以后面又开始慢慢接触SSM框架。这次要求我做的其实我完全可以用毕业设计的项目改过来,但是我想挑战一下自己,用SSM开发,并且涉及到数据库多表的查询,这也是之前没有实际操作过的。。。废话结束,开始代码。。
本篇的重点是记录SSM中关于mybatis部分的注解与非注解的方式开发。。
1.首先是项目结构
2.引入jar包(本人现在还不是用maven开发,所以还是要一个个的引入jar包)
3.首先是实体类(相应的数据表就不再建了)
public class Admin implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String loginname;
private String password;
//省略相应的get和set方法
}
4.mapper接口
public interface AdminMapper {
/**
* 根据登录名和密码查询用户
* */
//如果用注解方式开发,就直接在mapper接口上直接写SQL语句,当然,要在配置文件中开启mybatis的注解扫描
//@Select("select * from login where loginname=#{loginname} and password=#{password}")
//如果直接用xml配置文件的方式,那就不需要上述的注解,看下一步的xml配置文件(这里要注意的就是xml文件中的一些命名规则)
public Admin findWithLoginnameAndPassword(@Param("loginname")String loginname,
@Param("password")String password);
}
5.mapper映射文件
<?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接口对应-->
<mapper namespace="yz.yzkj.mapper.AdminMapper">
<!--注意id名,以及parameterType、resultType要与mapper接口对应,这样mybatis才能使用代理方式开发-->
<select id="findWithLoginnameAndPassword" parameterType="yz.yzkj.domain.Admin" resultType="yz.yzkj.domain.Admin">
select * from login
where loginname=#{loginname} and password=#{password}
</select>
</mapper>
6.service以及service的实现类:
接口就不提供了,其实现类为:
/**
* Admin服务层接口实现类
* */
@Service("adminService")
public class AdminServiceImpl implements AdminService{
/**
* 自动注入adminMapper
* */
@Autowired
private AdminMapper adminMapper;
/**
* AdminService接口Login方法实现
* */
public Admin login(String loginname,String password){
return adminMapper.findWithLoginnameAndPassword(loginname, password);
}
}
7.然后就是配置文件了,以下是spring的配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring.xsd">
<!-- mybatis:scan会将yz.yzkj.mapper包里面的所有接口当作mapper配置,之后可以自动引入mapper类 -->
<mybatis:scan base-package="yz.yzkj.mapper"/>
<!-- 扫描yz.yzkj包下面的java文件,有Spring的相关注解的类,则把这些类注册为Spring的bean -->
<context:component-scan base-package="'yz.yzkj"/>
<!-- 使用PropertyOverrideConfiguration后处理器加载数据源参数 -->
<context:property-override location="classpath:db.properties"/>
<!-- 配置C3P0数据源 -->
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"/> -->
<!--配置数据源dataSource,使用c3p0-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!--指定连接数据库的驱动-->
<property name="driverClass" value="${dataSource.driverClass}"/>
<!--指定连接数据库的URL-->
<property name="jdbcUrl" value="${dataSource.jdbcUrl}"/>
<!--指定连接数据库的用户名-->
<property name="user" value="${dataSource.user}"/>
<!--指定连接数据库的密码-->
<property name="password" value="${dataSource.password}"/>
</bean>
<!-- 配置SQLSessionFactory,org.mybatis.spring.SqlSessionFactoryBean书Mybatis社区开发用于整合Spring的bean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource">
<property name="configLocation" value="classpath:mybatis/MybatisConfig.xml" />
</bean>
<!-- JDBC事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
<!-- 启用支持annotation注解方式事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
以下是mybatis的配置文件:(总觉得这个可以通过什么方式省略掉,但现在还不是很熟,还是写上比较方便吧)
MyBatisConfig.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>
<package name="yz.yzkj.mapper"/>
</mappers>
</configuration>
哦,对了,还有springmvc的配置文件:springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring.xsd">
<!-- 自动扫描该包,SpringMVC会将包下用@Controller注解的类注册为Spring的controller -->
<context:component-scan base-package="yz.yzkj"/>
<!-- 设置默认配置方案 -->
<mvc:annotation-driven/>
<!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix">
<value>/WEB-INF/content/</value>
</property>
<!-- 后缀 -->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
关于页面,只要提供一个登录的表单就好了,就不贴出来了。至此,就结束了本次的学习记录。
总结:这次从注解的方式改成非注解的方式过程中暂时没有遇到什么很大的问题,有遇到的其中一个就是前面我没有加Mybatis的全局配置文件,然后就一直报错,后面添加上以后就可以了。这次修改为非注解的方式主要是注解方式开发我还不是很熟,而且后面还要配置关联查询,所以为了方便,我就改成了非注解方式开发。。