博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
30Mybatis_mybatis和spring整合-原始dao开发
阅读量:6892 次
发布时间:2019-06-27

本文共 5590 字,大约阅读时间需要 18 分钟。

这篇文章很重要,

第一步:我们讲一下整合的思路:

我们以前要用Mybatis是需要sqlMapConfig.xml(这个配置文件需要配置dataource,以及mapper.xml文件。)sqlMapConfig.xml如下:

 

现在我们加入spring之后,database就要交给spring的配置文件applicationContext.xml来处理了。而且我们以前在用Dao时,传统的做法是要在Dao类中有SqlSessionFactory,现在用Spring之后,最主要的改变就是这里了。

需要spring通过单例方式管理SqlSessionFactory。

spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)

久层的mapper都需要由spring进行管理。

 

第二步:给出具体案例:

案例结构如下:

 

1.lib里面的jar包如下:

2.我介绍下每个包里面的含义:

三个sourcefile:

src:有两个包:

cn.itcast.ssm.Dao包下面放着Dao和Dao继承类;

cn.itcast.ssm.po包下面放着pojo类;

 

config:是放配置文件的。

  mybatis/sqlMapConfig.xml:mybatis总的配置文件。

spring/applicationContext.xml:spring的配置文件。

sqlmap/user.xml:mapper.xml文件

db.properties:数据库的配置文件。

log4j.properties:日志文件。

 

test:放置测试文件:TestSpringMybatis.java.

 

 

下面给出每个文件的具体代码:

UserDao:

 

package cn.itcast.ssm.Dao;public interface UserDao {public void  findUserById(int id);}

 

UserDaoImpl:

package cn.itcast.ssm.Dao;import org.apache.ibatis.session.SqlSession;import org.mybatis.spring.support.SqlSessionDaoSupport;import cn.itcast.ssm.po.User;//这个类继承了SqlSessionDaoSupport,可以通过this.getSqlSession()来得到SqlSession//通过这种方式来注入。public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{    @Override    public void findUserById(int id) {        SqlSession session=this.getSqlSession();        User user=session.selectOne("test.findUserById",id);        System.out.println(user.getUsername());                                }}

User.class:

package cn.itcast.ssm.po;import java.io.Serializable;import java.util.Date;import java.util.List;public class User implements Serializable {private int id;//对应数据库中主键private String username;//对应数据库中用户的名称private Date birthday;//对应数据库中的生日private String sex;//性别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 Date getBirthday() {    return birthday;}public void setBirthday(Date birthday) {    this.birthday = birthday;}public String getSex() {    return sex;}public void setSex(String sex) {    this.sex = sex;}public String getAddress() {    return address;}public void setAddress(String address) {    this.address = address;}}

SqlMapConfig.xml:

 

 

 

applicationContext.xml

 

User.xml:

 

dp.properties:

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybaitsjdbc.username=rootjdbc.password=root

 

log4j.properties:

# Global logging configuration#\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u65e5\u5fd7\u7ea7\u522b\u8981\u8bbe\u7f6e\u6210DEBUG\uff0c\u751f\u4ea7\u73af\u5883\u8bbe\u7f6e\u6210info\u6216errorlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

 

TestSpringMybatis.java

package springmvc_mybatis_shen;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.itcast.ssm.Dao.UserDao;public class TestSpringMybatis {    ApplicationContext applicationContext;    @Before    public void setup()    {
//spring的方式加载配置文件 applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); } @Test public void testSpringMyabtis() {UserDao userDao=(UserDao) applicationContext.getBean("UserDao"); userDao.findUserById(1); }}

 

 

运行结果:正确。

 

DEBUG [main] - Searching for key 'spring.liveBeansView.mbeanDomain' in [systemProperties]

DEBUG [main] - Searching for key 'spring.liveBeansView.mbeanDomain' in [systemEnvironment]
DEBUG [main] - Could not find key 'spring.liveBeansView.mbeanDomain' in any property source. Returning [null]
DEBUG [main] - Returning cached instance of singleton bean 'UserDao'
DEBUG [main] - Creating a new SqlSession
DEBUG [main] - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@30e07209] was not registered for synchronization because synchronization is not active
DEBUG [main] - Fetching JDBC Connection from DataSource
DEBUG [main] - JDBC Connection [jdbc:mysql://localhost:3306/mybaits, UserName=root@localhost, MySQL-AB JDBC Driver] will not be managed by Spring
DEBUG [main] - ==>  Preparing: select * from user where id = ?
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - <==      Total: 1
DEBUG [main] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@30e07209]
DEBUG [main] - Returning JDBC Connection to DataSource
王五

 

转载地址:http://fchbl.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
iptables四个表五条链
查看>>
谈谈数据库中MyISAM与InnoDB区别
查看>>
一次执行webdriver所有的case
查看>>
我的友情链接
查看>>
[原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇)
查看>>
tomcat发布必须配置JAVA_HOME,但可以不配置CATALINA_HOME
查看>>
Oracle 闪回特性(FLASHBACK DATABASE)
查看>>
controllerAdvicer
查看>>
挂载WINDOWS共享目录
查看>>
史上最详细的vsftpd配置文件讲解
查看>>
跨域iframe自适应高度
查看>>
DBCP的使用
查看>>
大企业不妨先学小卖家
查看>>
Linux查找并拷贝文件命令
查看>>
真实的被流氓软件绑架的过程--鲁大师锁定浏览器主页修复
查看>>
jQuery中is和hasClass的用法
查看>>
我的25岁生日
查看>>
接口(Interface)设计方法和技术
查看>>
VR+Docker: 3D动漫<DOCKER化>的应用范例及其效益
查看>>