数据库:mysql5.5(其他也可以)
java环境:jdk1.8(eclipse或者IDEA都可以)
spring版本:spring4
需要的jar包:ssm全部jar包,参照https://mp.csdn.net/postedit/86485520这篇博客,百度云免费下载。
2.2、工程结构
三、spring和mybatis整合后原始dao开发
==========================
3.1、建立mybatis的xml文件SqlMapConfig.xml
在其中完成别名定义、缓存设置等配置
<?xml version="1.0" encoding="UTF-8"?>3.2、在applicationContext.xml中配置sqlSessionFactory和数据源
mybatis和spring整合之前,是在mybatis的配置文件SqlMapConfig.xml中通过envirotments标签来配置数据源(包括数据库的连接、连接池的配置)和控制事务的。mybatis和spring整合之后,这些都由spring来完成。
<context:property-placeholder location=“classpath:db.properties” />
<bean id=“dataSource” class=“org.apache.commons.dbcp.BasicDataSource”
destroy-method=“close”>
注意:在配置sqlSessionFactory时,需要加载mybatis的配置文件 和指明数据源
3.3、建立操作数据库表格时所对应的po类,查询的列构成po类的属性
这里我们仍然选择User.java来测试,同mybatis和spring整合之前。参照MyBatis详解(一):入门程序、MyBatis详解(二):mybatis开发dao
3.4、编写po类的映射文件,在其中编写sql语句
<?xml version="1.0" encoding="UTF-8" ?>
SELECT * FROM USER WHERE id = #{id}
3.5、在mybatis的xml文件SqlMapConfig.xml中加载po类的映射文件
3.6、编写dao(包括dao接口及其实现类)
dao接口:
package cn.itcast.ssm.dao;
import java.util.List;
import cn.itcast.ssm.po.User;
public interface UserDao {
//根据id查询用户信息
public User findUserById(int id) throws Exception;
}
dao实现类:dao实现类需要继承SqlSessionDaoSupport
在实现类中,通过this.getSqlSession()方法获得SqlSession
有人可能存在疑问:实现类中连SqlSessionFactory都没有,怎么就直接得到SqlSession了?事实上,dao实现类的bean是交给spring来管理的,我们在spring的IOC容器中配置dao实现类的bean时已经向里面注入SqlSessoinFactory了(见下文)。
package cn.itcast.ssm.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import cn.itcast.ssm.po.User;
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 = sqlSession.selectOne(“test.findUserById”, id);
return user;
}
}
3.7、在applicationContext.xml文件中配置dao实现类的bean
3.8、编写测试程序
package cn.itcast.ssm.dao;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.ssm.po.User;
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(1);
System.out.println(user);
}
}
3.9、mybatis和spring整合之后原始dao开发总结
相比于mybatis和spring整合之前,mybatis和spring整合之后原始dao开发把原来在mybatis配置文件SqlMapConfig.xml中完成的连接数据源、事务控制都交给spring来完成。同时spring还配置了SqlSessionFactory的bean(不需要单例模式去造了)、配置了dao实现类的bean(不需要new了)。
步骤如下:
1、导入所需要的jar包
2、将数据库的driver、url、user、password等信息封装在db.properties
3、建立mybatis的xml文件SqlMapConfig.xml,完成别名定义、缓存设置等配置
4、建立spring的配置文件applicationContext.xml,配置数据源、SqlSessionFactory和控制事务
5、建立操作数据库表格时所对应的po类,查询的列构成po类的属性
6、编写po类的映射文件,在其中编写sql语句
7、在mybatis的xml文件SqlMapConfig.xml中加载po类的映射文件
8、编写dao接口,并在其中编写po类xml映射文件中sql语句对应的抽象方法,编写dao接口的实现类,dao实现类需要继承SqlSessionDaoSupport
**9、**在applicationContext.xml文件中配置dao实现类的bean
10、编写测试程序
四、spring和mybatis整合后mapper代理开发
=============================
4.1、编写mapper接口对应的映射文件mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
SELECT * FROM USER WHERE id = #{id}
4.2、编写mapper接口mapper.java
package cn.itcast.ssm.mapper;
import java.util.List;
import cn.itcast.ssm.po.User;
/*
- 开发规范:
1、在mapper.xml中namespace等于mapper接口地址
2、mapper.java接口中的方法名和mapper.xml中statement的id一致
3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。
4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。
*/
public interface UserMapper {
//根据id查询用户信息
public User findUserById(int id) throws Exception;
}
4.3、在spring的配置文件applicationContext.xml中配置代理对象的bean
这里有两种方法,一种是MapperFactoryBean配置单个代理对象的bean,另一种是mapper批量扫描,即从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册 。推荐使用后者。这两种方法在配置代理对象的bean时都要注入SqlSessionFactory。
4.3.1、MapperFactoryBean配置单个代理对象的bean
mapperInterface指定mapper接口
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
rInterface" value=“cn.itcast.ssm.mapper.UserMapper”>
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-7GDTb9i4-1715059234494)]
[外链图片转存中…(img-2OGF4FCn-1715059234494)]
[外链图片转存中…(img-5gnGZYpt-1715059234495)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!