百度站长工具验证,网站制作技术人员,wordpress大门户主题,dw网页素材详细可以参考#xff1a;朱要光写的SpringMVCMyBatis开发从入门到实践的第7章#xff0c;其次在http://www.broadview.com.cn/book/5367也可以下载到本书所有的源代码和其中还包括lib包。下列程序在此基础上稍加修改。
工具#xff1a;myeclipse10
框架版本#xff1a;my…详细可以参考朱要光写的SpringMVCMyBatis开发从入门到实践的第7章其次在http://www.broadview.com.cn/book/5367也可以下载到本书所有的源代码和其中还包括lib包。下列程序在此基础上稍加修改。
工具myeclipse10
框架版本mybatis3spring4
数据库mysql5.5现在test空间中建立一张名为student的数据库表主要属性如下 1、新建一个webproject其主要程序目录主要如下所示 说明dao包主要放数据库查询处理的类数据交互层mapper是代理接口po是和数据库表相映射的java实体类test是测试类主要测试mybatisspring整理时使用代理和非代理的情况。先讲述不使用代理的情况。
2、主要配置文件首先在根目录新建一个源文件夹config注意选择source folder里面分别放置mybatis、spring、sqlmap的配置文件具体看图片中的名称。其次放置两个properties文件分别是数据库属性和日志属性是作用于全局的。
3、导入所需的jar包一般可以直接放入lib文件夹然后右键build path选择add to build path即可。所需的jar会在后续上传。 4、spring配置文件applicationContext.xml主要配置项如下
?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:mvchttp://www.springframework.org/schema/mvc xmlns:contexthttp://www.springframework.org/schema/context xmlns:aophttp://www.springframework.org/schema/aop xmlns:txhttp://www.springframework.org/schema/tx xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-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/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd !-- 加载配置文件 -- context:property-placeholder locationclasspath:db.properties / !-- 数据源使用dbcp -- bean iddataSource classorg.apache.commons.dbcp.BasicDataSource destroy-methodclose property namedriverClassName value${jdbc.driver} / property nameurl value${jdbc.url} / property nameusername value${jdbc.username} / property namepassword value${jdbc.password} / property namemaxActive value10 / property namemaxIdle value5 / /bean !-- sqlSessinFactory -- bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean !-- 加载mybatis的配置文件 -- property nameconfigLocation valuemybatis/SqlMapConfig.xml / !-- 数据源 -- property namedataSource refdataSource / /bean !-- 原始Dao接口 -- bean iduserDao classcn.com.sm.dao.UserDaoImpl property namesqlSessionFactory refsqlSessionFactory/property /bean bean classorg.mybatis.spring.mapper.MapperScannerConfigurer !-- 指定扫描的包名 如果扫描多个包每个包中间使用半角逗号分隔 -- property namebasePackage valuecn.com.sm.mapper / property namesqlSessionFactoryBeanName valuesqlSessionFactory/property /bean /beans
5、mybatis核心配置文件SqlMapConfig.xml配置内容如下
?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration !-- settings-- settings !-- 打开延迟加载的开关 -- setting namelazyLoadingEnabled valuetrue/ !-- 将积极加载改为消极加载(及按需加载) -- setting nameaggressiveLazyLoading valuefalse/ !-- 打开全局缓存开关(二级缓存)默认值就是true -- setting namecacheEnabled valuetrue/ /settings !-- 别名定义 -- typeAliases package namecn.com.sm.po/ /typeAliases !-- 加载映射文件 -- mappers !-- 通过resource方法一次加载一个映射文件 -- mapper resourcesqlmap/UserMapper.xml/ !-- 批量加载mapper package namecn.com.sm.mapper/-- /mappers /configuration
6、UserMapper.xml配置项如下
?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacetest select idselectUserById parameterTypeint resultTypecn.com.sm.po.Student SELECT * FROM student WHERE id #{id} /select select idselectUsers resultTypecn.com.sm.po.Student SELECT * FROM student /select insert idinsertUsers parameterTypecn.com.sm.po.Student insert into student(id, name, age, sex) value (#{id}, #{name}, #{age}, #{sex}) /insert
/mapper
Java实体类Student
package cn.com.sm.po; import java.io.*;
public class Student implements Serializable{ private int id; private String name; private int age; private String sex; //无需构造方法 //public Student(){} /*public Student(int id, String name, int age, String sex){ this.id id; this.name name; this.age age; this.sex sex; }*/ public int getId() { return id; } public void setId(int id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public int getAge() { return age; } public void setAge(int age) { this.age age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex sex; } }
7、db.properties和log4j.properties内容如下
1db.properties
jdbc.driverorg.gjt.mm.mysql.Driver jdbc.urljdbc:mysql://localhost:3306/test?characterEncodingutf-8 jdbc.usernameroot jdbc.password123456
2log4j.properties
# Global logging configuration log4j.rootLoggerDEBUG, stdout # Console output... log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%5p [%t] - %m%n
8、DAO层代码
1数据库操作接口类
package cn.com.sm.dao;
import cn.com.sm.po.Student;
public interface UserDao { public Student selectUserById(int id) throws Exception; public Student insertUsers(Student student) throws Exception; } 2实现类
package cn.com.sm.dao;
import java.util.ArrayList; import java.util.List;
import org.apache.ibatis.session.SqlSession; import org.mybatis.spring.support.SqlSessionDaoSupport;
import cn.com.sm.po.Student;
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao { Override public Student selectUserById(int id) throws Exception { // 继承SqlSessionDaoSupport类通过this.getSqlSession()得到sqlsession //SqlSessionDaoSupport类在MyBatis与Spring整合jar包中其中包含了sqlSessionFactory对象作为成员变量方便spring注入。 SqlSession sqlSession this.getSqlSession(); Student student sqlSession.selectOne(test.selectUserById, 1); return student; }
//其他操作方法可以继续写这边暂时空 Override public Student insertUsers(Student student) throws Exception { // TODO Auto-generated method stub return null; }
} 注意必须在spring配置文件applicationContext.xml中添加userDao配置并将上文中定义的sqlSessionFactory当做参数注入这样继承SqlSessionDaoSupport才有用。SqlSessionDaoSupport是mybatis和spring整合jar中的包含了sqlSessionFactory作为成员变量对外提供getter和setter以方便spring注入。 !-- 原始Dao接口 -- bean iduserDao classcn.com.sm.dao.UserDaoImpl property namesqlSessionFactory refsqlSessionFactory/property /bean
9、编写测试类UserServiceTest类测试整合后的效果
package cn.com.sm.test;
import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.com.sm.dao.UserDao; import cn.com.sm.po.Student;
public class UserServiceTest { private ApplicationContext applicationContext; //在执行测试方法之前首先获Spring配置文件对象 //注解Before是在执行本类所有测试方法之前先调用这个方法 Before public void setup() throws Exception{ applicationContextnew ClassPathXmlApplicationContext(classpath:spring/applicationContext.xml); } Test public void testFindUserById() throws Exception{ //通过配置资源对象获取userDao对象 UserDao userDao(UserDao)applicationContext.getBean(userDao); //调用UserDao的方法 Student stuuserDao.selectUserById(1); //输出用户信息 System.out.println(stu.getId():stu.getName()); } }
运行方式 效果输出id和姓名。 以上是不使用代理的情况如果要使用代理则需做以下修改
1、在applicationContext.xml中添加mapper扫描器用于指定包下扫描定义的mapper代理接口 bean classorg.mybatis.spring.mapper.MapperScannerConfigurer !-- 指定扫描的包名 如果扫描多个包每个包中间使用半角逗号分隔 -- property namebasePackage valuecn.com.sm.mapper / property namesqlSessionFactoryBeanName valuesqlSessionFactory/property /bean
2、在mapper包下建立代理接口和对应的mapper.xml配置文件
(1)UserQueryMapper接口
package cn.com.sm.mapper;
import cn.com.sm.po.Student;
/*使用Mapper代理要點 * 1、新建一個接口接口名称与mapper.xml文件名相同 * 2、接口中定义的方法名、参数、返回类型与mapper.xml中sql映射的id、输入类型和返回类型分别对应相同 */ public interface UserQueryMapper { //根据Id查询用户信息 public Student selectUserById(int id) throws Exception; } (2)UserQueryMapper.xml
?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecn.com.sm.mapper.UserQueryMapper select idselectUserById parameterTypeint resultTypecn.com.sm.po.Student SELECT * FROM student WHERE id #{id} /select /mapper
3、编写测试类UserMapperTest
package cn.com.sm.test;
import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.com.sm.mapper.UserQueryMapper; import cn.com.sm.po.Student;
public class UserMapperTest { private ApplicationContext applicationContext; //在执行测试方法之前首先获Spring配置文件对象 //注解Before是在执行本类所有测试方法之前先调用这个方法 Before public void setup() throws Exception{ applicationContextnew ClassPathXmlApplicationContext(classpath:spring/applicationContext.xml); } Test public void testFindUserById() throws Exception{ //通过配置资源对象获取userDao对象 UserQueryMapper queryMapper(UserQueryMapper)applicationContext.getBean(userQueryMapper); //调用UserDao的方法 Student stuqueryMapper.selectUserById(2); //输出用户信息 System.out.println(stu.getId():stu.getName()); } }
两种整合的方式就讲到这里。