Integrated approach
-
Creating a New Maven Project
-
Importing dependency packages
-
Configuring resource Files
A case in field
Creating a New Maven Project
Create a new Maven project spring_mybatis
The directory structure is as follows:
Home directory package:
Com. XXX. Dao,
Com. XXX. Mapper,
Com. XXX. The service,
com.xxx.service.impl
Test package: spring_mybatis
Importing dependency packages
Open pom.xml and start adding dependency packages
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<artifactId>test-xxxms</artifactId>
<version>1.0 the SNAPSHOT</version>
<name>test-xxxms</name>
<! -- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<! -- Spring core JAR -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.2. RELEASE</version>
</dependency>
<! -- Spring test jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.2. RELEASE</version>
</dependency>
<! -- spring jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.2. RELEASE</version>
</dependency>
<! -- Spring things -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.2. RELEASE</version>
</dependency>
<! -- C3P0 connection pool -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<! -- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1 track</version>
</dependency>
<! -- Add mybatis with Spring core package -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<! Mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<! -- Jar related to log printing -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
<build>
<finalName>tpl-web</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
</project>
Copy the code
Configuring resource Files
A) The Spring file spring.xml
B) Mybatis file Mybatis. XML
C) Connect database to properties file db.properties
D) Log output file log4j.properties
Spring.xml file configuration
<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: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/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:component-scan base-package="com.xxx"/>
<context:property-placeholder location="db.properties"/>
<tx:annotation-driven transaction-manager="txManager"/>
<! 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.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<! -- Integration framework (Spring and Mybatis)
<! - the configuration sqlSessionFactory -- -- >
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<! -- Data source -->
<property name="dataSource" ref="dataSource"></property>
<! -- Framework configuration file -->
<property name="configLocation" value="classpath:mybatis.xml" />
<! -- Mapping file -->
<property name="mapperLocations" value="classpath:com/xxx/dao/mapper/*.xml" />
</bean>
<! -- Configure the scanner -->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<! Dao and all mapped interface classes under com.xxx.dao
<property name="basePackage" value="com.xxx.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
</beans>
Copy the code
Mybatis. XML file configuration
<! DOCTYPEconfiguration
PUBLIC "- / / mybatis.org//DTD Config / 3.0 / EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<! -- Alias configuration everyone must know -->
<typeAliases>
<package name="com.xxx.model"/>
</typeAliases>
</configuration>
Copy the code
Db.properties file configuration (for other data source property configuration, see c3P0 configuration description, where default property configuration is used)
Establish database mybatis (note database, user name, password is subject to their own local database)
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis? useUnicode=true&characterEncoding= utf8 jdbc.username=root jdbc.password=Copy the code
log4j.properties
Facilitates console log output
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
Copy the code
extension
Start writing HelloWorld
User entity class definition
public class User {
private int id;
private String userName;
private String userPwd;
public int getId(a) {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName(a) {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd(a) {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
@Override
public String toString(a) {
return "User [id=" + id + ", userName=" + userName + ", userPwd="
\+ userPwd + "]"; }}Copy the code
UseDao interface and mapping file definition
UserDao interface
public interface UserDao {
public User queryUserById(int id);
}
Copy the code
Usermapper. XML (Note: the mapping file namespace definition should comply with the rule: interface package name. Interface class
Name, otherwise not according to the rules of the card, the test will report an error, and then you will be confused!!
<! DOCTYPEmapper
PUBLIC "- / / mybatis.org//DTD Mapper / 3.0 / EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.dao.UserDao">
<select id="queryUserById" parameterType="int" resultType="user">
select id,userName,userPwd from user where id=#{id}
</select>
</mapper>
Copy the code
UserService interface class and implementation class definition
public interface UserService {
public User queryUserById(a);
}
Copy the code
UserServiceImpl implementation class (at this point just inject our UserDao interface and call it directly
Its method, the matter has been so far, only one step away from success!
@Service
public class UserServiceImpl implements UserService{
@Resource
private UserDao userDao;
public User queryUserById(a){
return userDao.queryUserById(7); }}Copy the code
Junit tests
Because of integration with the Spring framework, we used the Spring framework to Test Spring tests
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring.xml"} )
public class TestSpringMybatis {
@Autowired
private UserService userService;
@Test
public void testQueryUserById(a) {
System.out.println(userService.queryUserById(1)); }}Copy the code
Results output