mybatis
目录结构
导包
包括 mybatis, mysql-connector-java
<?xml version="1.0" encoding="UTF-8"?>
<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>groupId</groupId>
<artifactId>ssm2</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.8-dmr</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-core</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
</project>
写 db.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456
写 mybatis-config.xml 文件
写 mybatis-config.xml 配置文件 里面包含数据的连接信息和映射文件(这里的连接信息也可以删掉 后面会写一个连接数据库的资源文件 在 spring 里面引用)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!--<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>-->
<!--<property name="username" value="root"/>-->
<!--<property name="password" value="123456"/>-->
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
实体类和对应的映射文件
pojo 及对应的*Mapper.xml
比如 User bean 类,及 UserMapper.xml
User
package com.mfl.ssm.pojo;
public class User {
private Integer id;
private String name;
private int age;
public User(){
}
public User(String name, int age){
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
}
interface IUserDao
package com.mfl.ssm.dao;
import com.mfl.ssm.pojo.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface IUserDao {
public void insert(User user);
public void update(User user);
public User selectOne(int id);
public List<User> selectList(int age);
public List<User> selectAll();
public List<User> selectUserByBetweenAandB(@Param("a") int a1, @Param("b") int b1);
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mfl.ssm.dao.IUserDao">
<insert id="insert">
insert into users(name,age) values (#{name},#{age})
</insert>
<update id="update" >
update users set name=#{name}, age=#{age} where id=#{id}
</update>
<select id="selectOne" parameterType="int" resultType="com.mfl.ssm.pojo.User">
select * from users where id=#{id1}
</select>
<select id="selectList" parameterType="int" resultType="com.mfl.ssm.pojo.User">
select * from users where age=#{age}
</select>
<select id="selectAll" resultType="com.mfl.ssm.pojo.User">
select * from users
</select>
<select id="selectUserByBetweenAandB" resultType="com.mfl.ssm.pojo.User">
select * from users where age between #{a} and #{b1}
</select>
</mapper>
测试
引入 junit
import com.mfl.ssm.dao.IUserDao;
import com.mfl.ssm.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class mybatis {
@Test
public void test1(){
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession=sqlSessionFactory.openSession();
IUserDao iUserDao=sqlSession.getMapper(IUserDao.class);
System.out.println(IUserDao.class);
}
@Test
public void test2(){
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession=sqlSessionFactory.openSession();
IUserDao iUserDao=sqlSession.getMapper(IUserDao.class);
System.out.println(IUserDao.class);
for(User user:iUserDao.selectAll()){
System.out.println(user);
}
sqlSession.commit();
sqlSession.close();
}
}
spring
引入 Stirng 对于连接池 c3p0 的支持 Spring-jdbc4,引入 mybatis 对于 Spring 的依赖 mybatis-spring1,引入 c3p0 连接池的依赖
创建 spring-mybatis.xml
配置扫描器
<context:component-scan base-package="com.mfl.ssm.dao,com.mfl.ssm.pojo"></context:component-scan>
并加注解 bean
包括@Repository 和@Service
@Repository
public class User {
引入连接数据库的资源文件 db.properties
<!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="db.properties" />
</bean>
配置 c3p0 数据源(class:combopooleDataSource)
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="initialPoolSize" value="5"></property>
<property name="maxPoolSize" value="20"></property>
</bean>
配置 sqlSessionFactor
<!-- 配置sqlSessionFactor -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="mapper/*Mapper.xml"/>
</bean>
DAO 接口所在包名
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mfl.ssm.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
在 web.xml 中通过 listener 加载 spring
<!-- Spring和mybatis的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
test
import com.mfl.ssm.dao.IUserDao;
import com.mfl.ssm.pojo.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class spring {
@Test
public void test1(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-mybatis.xml");
IUserDao iUserDao=(IUserDao)applicationContext.getBean("iUserDao");
System.out.println(iUserDao.getClass());
}
@Test
public void test2(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-mybatis.xml");
User user=(User)applicationContext.getBean("user");
System.out.println(user);
}
}
spring MVC
spring-mvc.xml
配置扫描器
spring-mvc.xml
<context:component-scan base-package="com.mfl.ssm.controller"></context:component-scan>
视图解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
在 web.xml 中通过 servlet 加载 springmvc
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>