一、开发准备
1、jar 包
包括 spring开发必备包,mybatis核心包,spring和mybatis整合包,日志包
还有 Junit4 包
2、数据库
我在本地测试,主机 localhost,用户名 root,密码为空
创建数据表 user,5个字段,测试数据如下
二、文件结构
1、文件夹结构
config 存放配置文件
----mybatis 存放mybatis的配置文件
----spring 存放spring的配置文件
----sqlmap 存放映射文件
----db.properties 数据库连接属性
src 存放源代码
----com.liuyanzhao.smm 包名
--------dao 存放dao类
--------po 存放持久类
--------test 存放测试类
本例文件一览
其中 jar 包放在 web/WEB_INF/lib 文件夹中,并已导入 环境中
三、代码实现
应重视的文件,这里会高亮标识
1、Configuration.xml mybatis 全局配置文件
- <?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>
- <!--单条映射-->
- <mapper resource="sqlmap/userDao.xml"></mapper>
- </mappers>
- </configuration>
mybatis 和 spring 整合后,我们不再需要在 mybatis 全局配置文件中加入 <environments> 标签,数据库连接配置现在 在 spring 配置文件中以 bean 方式填写。
2、applicationContext.java
- <?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"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd">
- <!--加载配置文件-->
- <context:property-placeholder location="classpath:db.properties"/>
- <!--数据源,配置c3p0连接池-->
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <!--注入属性-->
- <property name="driverClass" value="${jdbc.driver}"></property>
- <property name="jdbcUrl" value="${jdbc.url}"></property>
- <property name="user" value="${jdbc.username}"></property>
- <property name="password" value="${jdbc.password}"></property>
- </bean>
- <!--sqlSessionFactory-->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <!--加载mybatis配置文件-->
- <property name="configLocation" value="mybatis/Configuration.xml"/>
- <!--配置数据源,ref和数据源的id一致-->
- <property name="dataSource" ref="dataSource"/>
- </bean>
- <!--原始dao接口,ref和sqlSessionFactory的id一致-->
- <bean id="userDao" class="com.liuyanzhao.ssm.dao.UserDaoImpl">
- <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
- </bean>
- </beans>
先要创建数据源(dataSource),然后获得 连接工厂(sqlSessionFactory),最终得以配置
3、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="test">
- <select id="findUserById" parameterType="java.lang.Integer" resultType="com.liuyanzhao.ssm.po.User">
- SELECT * FROM user WHERE id=#{value}
- </select>
- </mapper>
这里都是 mybatis 里的知识了,没啥好说的
4、db.properties
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
- jdbc.username=root
- jdbc.password=
之所以把 数据库连接信息从 applicationContext.xml 中分离出来,是因为以后我们的 xml 文件会越来越多,需要重新修改,甚至是让机器来修改 我们的数据库用户名和密码等信息,十分不方便。
5、UserDao.java UserDao 接口
- package com.liuyanzhao.ssm.dao;
- import com.liuyanzhao.ssm.po.User;
- /**
- * Created by 言曌 on 2017/8/10.
- */
- public interface UserDao {
- //根据id查询用户信息
- public User findUserById(int id) throws Exception;
- }
6、UserDaoImpl.java UserDao 的实现类
- package com.liuyanzhao.ssm.dao;
- import com.liuyanzhao.ssm.po.User;
- import org.apache.ibatis.session.SqlSession;
- import org.mybatis.spring.support.SqlSessionDaoSupport;
- /**
- * Created by 言曌 on 2017/8/10.
- */
- public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{
- @Override
- public User findUserById(int id) throws Exception {
- //通过继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSession
- SqlSession sqlSession = this.getSqlSession();
- //执行查询操作,赋值给user对象
- User user = sqlSession.selectOne("test.findUserById",id);
- //自动释放资源,不需要手动
- return user;
- }
- }
我们这里之所以继承 SqlSessionDaoSupport ,是因为 SqlSessionDaoSupport 的有一些方法,我们正好需要。
我们先看以前的方法
我们必须手动创建 SqlSessionFactory 的对象,并且 UserDaoImpl 必须接受参数,才能创建 sqlSession
现在我们不用那个方法,通过集成 SqlSessionDaoSupport 类,可以让我们减少一些代码,让我们看一下 SqlSessionDaoSupport 的定义(IntelliJ IDEA下查看方法的定义快捷键是:Ctrl+Shift+I)
现在我们获得 sqlSession 是不是简单很多呢
7、User.java User的持久类
- package com.liuyanzhao.ssm.po;
- import java.util.Date;
- /**
- * 用户的持久类
- */
- public class User {
- private int id; //编号
- private String username; //用户名
- private String gender; //性别
- private Date birthday; //生日
- private String address; //地址
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", username='" + username + '\'' +
- ", gender='" + gender + '\'' +
- ", birthday=" + birthday +
- ", address='" + address + '\'' +
- '}';
- }
- }
8、测试类 UserDaoImplTest.java
- package com.liuyanzhao.ssm.test;
- import com.liuyanzhao.ssm.dao.UserDao;
- import com.liuyanzhao.ssm.po.User;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- /**
- * Created by 言曌 on 2017/8/14.
- */
- public class UserDaoImplTest {
- private ApplicationContext applicationContext;
- //在 setUp方法中得到spring容器
- @Before
- public void setUp() throws Exception{
- applicationContext =
- new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
- }
- @Test
- public void testFindUserById() throws Exception {
- UserDao userDao = (UserDao) applicationContext.getBean("userDao");
- //调用userDao的方法
- User user = userDao.findUserById(28);
- System.out.println(user);
- }
- }
普通的 spring 形式
以上代码已打包:
链接: https://pan.baidu.com/s/1eSviRfk 密码: 8fy2
本文链接:https://liuyanzhao.com/5880.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏