MyBatis04

MyBatis整合Spring

1.SqlSessionFactory对象应该放到spring容器中作为单例存在

2.传统Dao的开发方式中,应该从spring容器中获得sqlsession对象

3.Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象

4.数据库的连接以及数据库连接池事务管理都交给spring容器中完成。

1.整合需要的jar包

1.spring的jar包

2.Mybatis的jar包

3.spring+mybatis的整合包

4.MySql的数据库驱动jar包

5.数据库连接池的jar包

 

2.整合的步骤

1.创建一个java工程

2.导入前面提到的jar包

3.加入配置文件mybatisSpring

 1 1》创建资源文件夹config
 2 
 3 2》创建SqlMapConfig.xml文件。如下
 4 
 5 <?xml version="1.0" encoding="UTF-8" ?>
 6 
 7 <!DOCTYPE configuration
 8 
 9 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
10 
11 "http://mybatis.org/dtd/mybatis-3-config.dtd">
12 
13 <configuration>
14 
15 <!-- 设置别名 -->
16 
17 <typeAliases>
18 
19 <!-- 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->
20 
21 <package name="com.test.mybatis.pojo" />
22 
23 </typeAliases>
24 
25 </configuration>

3》创建spring的文件applicationContext.xml。如下

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4 
 5        xmlns:context="http://www.springframework.org/schema/context"
 6 
 7 xmlns:p="http://www.springframework.org/schema/p"
 8 
 9        xmlns:aop="http://www.springframework.org/schema/aop"
10 
11 xmlns:tx="http://www.springframework.org/schema/tx"
12 
13 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
14 
15        xsi:schemaLocation="http://www.springframework.org/schema/beans
16 
17 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
18 
19        http://www.springframework.org/schema/context
20 
21 http://www.springframework.org/schema/context/spring-context-4.0.xsd
22 
23        http://www.springframework.org/schema/aop
24 
25        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
26 
27        http://www.springframework.org/schema/tx
28 
29 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
30 
31        http://www.springframework.org/schema/util
32 
33 http://www.springframework.org/schema/util/spring-util-4.0.xsd">
34 
35  
36 
37 <context:property-placeholder location="classpath:jdbc.propertis"/>
38 
39 <!-- dbcp数据源 -->
40 
41 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
42 
43 <property name="driverClassName" value="${jdbc.driver}"/>
44 
45 <property name="url" value="${jdbc.url}"/>
46 
47 <property name="username" value="${jdbc.username}"/>
48 
49 <property name="password" value="${jdbc.password}"/>
50 
51 <property name="maxActive" value="10"/>
52 
53 <property name="maxIdle" value="5"/>
54 
55 </bean>
56 
57 </beans>

4》创建jdbc.properties的文件,如下

1 jdbc.driver=com.mysql.jdbc.Driver
2 
3 jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
4 
5 jdbc.username=root
6 
7 jdbc.password=root

5》创建日志log4j.properties

 1 # Global logging configuration
 2 
 3 log4j.rootLogger=DEBUG, stdout
 4 
 5 # Console output...
 6 
 7 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 8 
 9 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
10 
11 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

6》最终效果

 

Dao开发

两种dao实现方式:

1.原始dao的开发方式

2.使用mapper代理形式开发方式

a.直接配置Mapper代理

b.使用扫描包配置Mapper代理

需求:1.实现根据用户id查询用户

    2.实现根据用户名称模糊查询

    3.添加用户

1.创建pojo

 1 public class User {
 2 
 3     private int id;
 4 
 5     private String username;// 用户姓名
 6 
 7     private String sex;// 性别
 8 
 9     private Date birthday;// 生日
10 
11     private String address;// 地址
12 
13 get/set。。。
14 
15 }

Mapper代理形式开发Dao

1》编写UserMapper.xml配置文件如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 
 3 <!DOCTYPE mapper
 4 
 5 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 6 
 7 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 8 
 9 <mapper namespace="com.test.mybatis.mapper.UserMapper">
10 
11 <select id="findUserById" parameterType="Integer" resultType="User">
12 
13 select * from user where id = #{v}
14 
15 </select>
16 
17 </mapper>

2》实现UserMapper接口

1 package com.test.mybatis.mapper;
2 
3 import com.test.mybatis.pojo.User;
4 public interface UserMapper {
5 //查询
6 public User findUserById(Integer id);
7 
8 }

3》方式一:配置mapper代理

1 <!--Mapper代理开发方式一: 配置Mapper对象 -->
2 <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
3 <!-- 配置SqlSessionFactory-->
4 <property name="sqlSessionFactory" ref="SqlSessionFactoryBean" />
5 <!-- 配置mapper接口 -->
6 <property name="mapperInterface" value="com.test.mybatis.mapper.UserMapper" />
7 </bean>

方式二:扫描包形式配置mapper

1 <!-- Mapper动态代理开发  扫描包-->
2 
3 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
4 
5 <!-- 配置mapper接口 -->
6 
7 <property name="basePackage" value="com.test.mybatis.mapper" />
8 
9 </bean>

5.》测试

 1 public class JunitTest {
 2 
 3 @Test
 4 
 5 public void testMapper(){
 6 
 7 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
 8 
 9 //方式1
10 
11 //ac.getBean(UserMapper.class);
12 
13 //方式2
14 
15 UserMapper um = (UserMapper)ac.getBean("userMapper");
16 
17 User u = um.findUserById(10);
18 
19 System.out.println(u);
20 
21 }
22     
23 }

效果:

 

猜你喜欢

转载自www.cnblogs.com/wuxixin/p/9894909.html