Mybatis整合Spring

来源:互联网 发布:杭州5年经验程序员工资 编辑:程序博客网 时间:2024/05/16 12:10

1、创建maven项目导入jar包
pom.xml中

<dependencies>    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis-spring</artifactId>        <version>1.2.3</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>1.7.2</version>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>    </dependency>    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.43</version>    </dependency>    <dependency>        <groupId>commons-dbcp</groupId>        <artifactId>commons-dbcp</artifactId>        <version>20030825.184428</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-web</artifactId>        <version>4.3.10.RELEASE</version>    </dependency>    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis</artifactId>      <version>3.2.8</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-jdbc</artifactId>        <version>4.3.10.RELEASE</version>    </dependency>    <dependency>        <groupId>commons-pool</groupId>        <artifactId>commons-pool</artifactId>        <version>1.5.6</version>    </dependency>  </dependencies>

2、创建实体类User

public class User implements Serializable {    private Integer id;    private String username;    private String password;    private Date birthday;    private String address;    public User() {    }    public User(String username, String password, Date birthday, String address) {        this.username = username;        this.password = password;        this.birthday = birthday;        this.address = address;    }    get、set方法}

2、创建sql映射文件和mappe接口,放在同一个包下,名称相同

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.scu.mybatis.mapper.UserMapper">    <!-- 插入数据 -->    <insert id="save" parameterType="com.scu.mybatis.entity.User">    <selectKey keyProperty="id" order="AFTER" resultType="int">        SELECT LAST_INSERT_ID()    </selectKey>        INSERT INTO t_user (username,password,birthday,address) VALUES(#{username},#{password},#{birthday},#{address})    </insert>    <!-- 根据id查询数据 -->    <select id="findById" parameterType="int" resultType="com.scu.mybatis.entity.User">        SELECT * FROM t_user u WHERE u.id=#{id}     </select>    <!-- 查询所有用户信息 -->    <select id="findList" resultType="com.scu.mybatis.entity.User">        SELECT * FROM t_user    </select>    <!-- 根据用户名模糊查询,一定要写成value不能写成username -->    <select id="findByName" resultType="com.scu.mybatis.entity.User" parameterType="string">        SELECT * FROM t_user u WHERE u.username LIKE '%${value}%'     </select>    <!-- 修改用户信息 -->    <update id="updateById" parameterType="com.scu.mybatis.entity.User">        UPDATE t_user u SET u.username=#{username},u.password=#{password},            u.birthday=#{birthday},u.address=#{address}        WHERE u.id=#{id}     </update>    <!-- 删除 -->    <delete id="delete" parameterType="int">        DELETE FROM t_user  WHERE id=#{id}     </delete></mapper>
public interface UserMapper {    //插入数据    public void save(User user);    //根据id查询数据     public User findById(int id);    //查询所有用户信息    public List<User> findList();    //根据用户名模糊查询    public List<User> findByName(String username);    //修改用户信息    public void updateById(User user);    //删除用户    public void delete(int id);}   

4、引入配置文件jdbc.properties

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis2?characterEncoding=utf-8jdbc.username=rootjdbc.password=123456

5、引入mybatis全局配置文件SqlMapConfig.xml

<?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><typeAliases>    <package name="com.scu.mybatis.entity"/></typeAliases></configuration>

6、引入Spring配置文件applicationContext.xml

  • 加载配置文件jdbc.properties
  • 配置数据库连接池
  • 配置SqlSessionFactory
  • 配置MapperScannerConfigurer
<!-- 加载配置文件 -->    <context:property-placeholder location="classpath:jdbc.properties"/>    <!-- 配置数据库连接池 -->    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">        <property name="url" value="${jdbc.url}"></property>        <property name="driverClassName" value="${jdbc.driver}"></property>        <property name="username" value="${jdbc.username}"></property>        <property name="password" value="${jdbc.password}"></property>    </bean>    <!-- 配置SqlSessionFactory     1、指定数据源    2、指定mybatis全局配置文件位置,如果没不需要用到里面的配置的话也可以不指定    -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:sqlMapConfig.xml"/>    </bean>     <!--         mybatis获取mapper接口:        SqlSession session = SqlSessionFactory.openSession();        UserMapper mapper = session.getMapper(UserMapper.class);        与spring整合的话,如下配置顶替上面获取方式        会自动扫描com.scu.mybatis.mapper包下所有mapper接口,同时会在自动在容器        中寻找Session工厂。     -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.scu.mybatis.mapper"></property>        <!-- 会自动在容器内找sqlSessionFactory的,所以可以不配置sqlSessionFactory当然配置了也没问题         -->    </bean>

注:sql映射文件一定要跟mapper接口文件在同一包下且名称要一样,否则上面那种配置测试的话会出现绑定异常。

测试:根据id查询用户信息

    @Test    public void test(){        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");        UserMapper mapper = ac.getBean(UserMapper.class);        User user = mapper.findById(1);        System.out.println(user.getUsername()+","+user.getPassword());    }