淺析Spring和MyBatis整合及逆向工程。本站提示廣大學習愛好者:(淺析Spring和MyBatis整合及逆向工程)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析Spring和MyBatis整合及逆向工程正文
spring和mybatis整合
整合思緒
須要spring經由過程單例方法治理SqlSessionFactory。
spring和mybatis整合生成署理對象,應用SqlSessionFactory創立SqlSession。(spring和mybatis整合主動完成)
耐久層的mapper都須要由spring停止治理。
整合情況
創立一個新的java工程(接近現實開辟的工程構造)
jar包:
mybatis3.2.7的jar包
spring3.2.0的jar包
mybatis和spring的整合包:晚期ibatis和spring整合是由spring官方供給,如今mybatis和spring整合由mybatis供給。
全體jar包(含springmvc)
工程構造
第一步:整合設置裝備擺設sqlSessionFactory
在applicationContext.xml設置裝備擺設sqlSessionFactory和數據源
sqlSessionFactory在mybatis和spring的整合包下。
<!-- 加載設置裝備擺設文件 --> <context:property-placeholder location="classpath:db.properties" /> <!-- 數據源,應用dbcp --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxActive" value="10" /> <property name="maxIdle" value="5" /> </bean> <!-- sqlSessinFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 加載mybatis的設置裝備擺設文件 --> <property name="configLocation" value="mybatis/SqlMapConfig.xml" /> <!-- 數據源 --> <property name="dataSource" ref="dataSource" /> </bean>
原始dao開辟(和spring整合後)
sqlmap/User.xml
在SqlMapconfig.xml中加載User.xml
dao(完成類繼續SqlSessionDaoSupport)
之前dao接話柄現類須要注入SqlSessoinFactory,經由過程spring停止注入。
這裡應用spring聲明設置裝備擺設方法,設置裝備擺設dao的bean:
讓UserDaoImpl完成類繼續SqlSessionDaoSupport
設置裝備擺設dao
在applicationContext.xml中設置裝備擺設dao接口
<!-- 原始dao接口 --> <bean id="userDao" class="cn.itcast.ssm.dao.UserDaoImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
測試法式
source_folder/UserDaoImplTest.java 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); } }
mapper署理開辟
Usermapper.xml和Usermapper.java
將之前工程中拷貝過去刪改包途徑便可。
經由過程MapperFactoryBean創立署理對象
由於UserMapper不是接口類型,所以要用MapperFactoryBean來生成接口類型
此辦法成績:
須要針對每一個mapper停止設置裝備擺設,費事。
經由過程MapperScannerConfigurer停止mapper掃描(建議應用)
* 這裡經由過程basePackage屬性設置裝備擺設了mapper的掃描途徑後,在SqlMapperConfig.xml中就不消設置裝備擺設掃描途徑了。
這裡應用sqlSessionFactoryBeanName屬性是由於假如設置裝備擺設的是sqlSessionFactory屬性,將不會先加載數據庫設置裝備擺設文件及數據源設置裝備擺設(db.properties)
測試代碼
逆向工程
mybaits須要法式員本身編寫sql語句,mybatis官方供給逆向工程 可以針對單表主動生成mybatis履行所須要的代碼(mapper.java,mapper.xml、po..)
企業現實開辟中,經常使用的逆向工程方法:因為數據庫的表生成java代碼。
下載逆向工程
應用辦法(會用)運轉逆向工程
建議應用java法式方法,不依附開辟對象。
生成代碼設置裝備擺設文件(有4處須要修正的處所)
生成PO類的地位 : cn.itcast.ssm.po
mapper映照文件生成的地位 : cn.itcast.ssm.mapper
mapper接口生成的地位 : cn.itcast.ssm.mapper
指定命據庫表:
<table tableName="items"></table> <table tableName="orders"></table> <table tableName="orderdetail"></table> <table tableName="user"></table> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 能否去除主動生成的正文 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--數據庫銜接的信息:驅動類、銜接地址、用戶名、暗碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="mysql"> </jdbcConnection> <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" userId="yycg" password="yycg"> </jdbcConnection> --> <!-- 默許false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和 NUMERIC 類型解析為java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成PO類的地位 --> <javaModelGenerator targetPackage="cn.itcast.ssm.po" targetProject=".\src"> <!-- enableSubPackages:能否讓schema作為包的後綴 --> <property name="enableSubPackages" value="false" /> <!-- 從數據庫前往的值被清算前後的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映照文件生成的地位 --> <sqlMapGenerator targetPackage="cn.itcast.ssm.mapper" targetProject=".\src"> <!-- enableSubPackages:能否讓schema作為包的後綴 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的地位 --> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.itcast.ssm.mapper" targetProject=".\src"> <!-- enableSubPackages:能否讓schema作為包的後綴 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定命據庫表 --> <table tableName="items"></table> <table tableName="orders"></table> <table tableName="orderdetail"></table> <table tableName="user"></table> </context> </generatorConfiguration>
履行生成法式
生成後的代碼
應用生成的代碼
須要將生成工程中所生成的代碼拷貝到本身的工程中。
測試ItemsMapper中的辦法
//自界說前提查詢 @Test public void testSelectByExample() { ItemsExample itemsExample = new ItemsExample(); //經由過程criteria結構查詢前提 ItemsExample.Criteria criteria = itemsExample.createCriteria(); criteria.andNameEqualTo("筆記本3"); //能夠前往多筆記錄 List<Items> list = itemsMapper.selectByExample(itemsExample); System.out.println(list); } //依據主鍵查詢 @Test public void testSelectByPrimaryKey() { Items items = itemsMapper.selectByPrimaryKey(1); System.out.println(items); } //拔出 @Test public void testInsert() { //結構 items對象 Items items = new Items(); items.setName("手機"); items.setPrice(999f); itemsMapper.insert(items); } //更新數據 @Test public void testUpdateByPrimaryKey() { //對一切字段停止更新,須要先查詢出來再更新 Items items = itemsMapper.selectByPrimaryKey(1); items.setName("水杯"); itemsMapper.updateByPrimaryKey(items); //假如傳入字段不空為才更新,在批量更新中應用此辦法,不須要先查詢再更新 //itemsMapper.updateByPrimaryKeySelective(record); }
以上所述是小編給年夜家引見的淺析Spring和MyBatis整合及逆向工程,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!