zoukankan      html  css  js  c++  java
  • 笔记60 Spring+Mybatis整合

    整合思路:将SessionFactory交给Spring管理,并且把Mapper和XML结合起来使用。

    一、目录结构

    二、基本的pojo

    Category.java

     1 package com.pojo;
     2 
     3 public class Category {
     4     private int id;
     5     private String name;
     6 
     7     public int getId() {
     8         return id;
     9     }
    10 
    11     public void setId(int id) {
    12         this.id = id;
    13     }
    14 
    15     public String getName() {
    16         return name;
    17     }
    18 
    19     public void setName(String name) {
    20         this.name = name;
    21     }
    22 
    23     public String toString() {
    24         return "Category [id=" + id + ", name=" + name + "]";
    25     }
    26 }

    三、Mapper

    在这里使用动态SQL语句,需要新增CategoryDynaSqlProvider,提供CRUD对应的SQL语句。

    CategoryMapper.java

     1 package com.mapper;
     2 
     3 import java.util.List;
     4 
     5 import org.apache.ibatis.annotations.DeleteProvider;
     6 import org.apache.ibatis.annotations.InsertProvider;
     7 import org.apache.ibatis.annotations.SelectProvider;
     8 import org.apache.ibatis.annotations.UpdateProvider;
     9 
    10 import com.dynasql.CategoryDynaSqlProvider;
    11 import com.pojo.Category;
    12 
    13 public interface CategoryMapper {
    14     @InsertProvider(type = CategoryDynaSqlProvider.class, method = "add")
    15     public int add(Category category);
    16 
    17     @DeleteProvider(type = CategoryDynaSqlProvider.class, method = "delete")
    18     public void delete(int id);
    19 
    20     @SelectProvider(type = CategoryDynaSqlProvider.class, method = "get")
    21     public Category get(int id);
    22 
    23     @UpdateProvider(type = CategoryDynaSqlProvider.class, method = "update")
    24     public int update(Category category);
    25 
    26     @SelectProvider(type = CategoryDynaSqlProvider.class, method = "list")
    27     public List<Category> list();
    28 
    29 }

    四、CategoryDynaSqlProvider.java

     1 package com.dynasql;
     2 
     3 import org.apache.ibatis.jdbc.SQL;
     4 
     5 public class CategoryDynaSqlProvider {
     6     public String list() {
     7         return new SQL().SELECT("*").FROM("category").toString();
     8     }
     9 
    10     public String get() {
    11         return new SQL().SELECT("*").FROM("category").WHERE("id=#{id}").toString();
    12     }
    13 
    14     public String add() {
    15         return new SQL().INSERT_INTO("category").VALUES("name", "#{name}").toString();
    16     }
    17 
    18     public String update() {
    19         return new SQL().UPDATE("category").SET("name=#{name}").WHERE("id=#{id}").toString();
    20     }
    21 
    22     public String delete() {
    23         return new SQL().DELETE_FROM("category").WHERE("id=#{id}").toString();
    24     }
    25 }

    或者直接采用xml的方式进行配置:Category.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper
     3     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 
     6 <mapper namespace="com.mapper.CategoryMapper">
     7     <insert id="add" parameterType="Category">
     8         insert into category ( name ) values (#{name})
     9     </insert>
    10 
    11     <delete id="delete" parameterType="Category">
    12         delete from category where id= #{id}
    13     </delete>
    14 
    15     <select id="get" parameterType="_int" resultType="Category">
    16         select * from category where id= #{id}
    17     </select>
    18 
    19     <update id="update" parameterType="Category">
    20         update category set name=#{name} where id=#{id}
    21     </update>
    22     <select id="list" resultType="Category">
    23         select * from category
    24     </select>
    25 </mapper>

    五、applicationContext.xml

    1.识别注解

    1 <context:annotation-config></context:annotation-config>

    2.配置数据源

    1 <bean name="dataSource"
    2         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    3         <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    4         <property name="url"
    5             value="jdbc:mysql://localhost:3306/sh?characterEncoding=UTF-8"></property>
    6         <property name="username" value="root"></property>
    7         <property name="password" value="123456"></property>
    8 </bean>

    3.配置Mybatis的SqlSessionFactory bean,扫描基本的pojo包、加载数据源、扫描配置xml配置文件(如果使用SQL动态语句,这一步可省略)

    1     <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
    2         <property name="typeAliasesPackage" value="com.pojo" />
    3         <property name="dataSource" ref="dataSource" />
    4         <property name="mapperLocations" value="classpath:com/mapper/*.xml"/>
    5     </bean>

    4.扫描Mapper类

    1 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    2         <property name="basePackage" value="com.mapper" />
    3 </bean>

    applicationContext.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
     4     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
     5     xsi:schemaLocation="
     6    http://www.springframework.org/schema/beans
     7    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     8    http://www.springframework.org/schema/aop
     9    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    10    http://www.springframework.org/schema/tx
    11    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    12    http://www.springframework.org/schema/context     
    13    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    14 
    15 
    16     <context:annotation-config></context:annotation-config>
    17 
    18     <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
    19         <property name="typeAliasesPackage" value="com.pojo" />
    20         <property name="dataSource" ref="dataSource" />
    21         
    22     </bean>
    23 
    24     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    25         <property name="basePackage" value="com.mapper" />
    26     </bean>
    27     <!-- 配置数据源 -->
    28     <bean name="dataSource"
    29         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    30         <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    31         <property name="url"
    32             value="jdbc:mysql://localhost:3306/sh?characterEncoding=UTF-8"></property>
    33         <property name="username" value="root"></property>
    34         <property name="password" value="123456"></property>
    35     </bean>
    36 </beans>

    六、测试

     1 package com.test;
     2 
     3 import java.util.List;
     4 
     5 import org.junit.runner.RunWith;
     6 import org.springframework.beans.factory.annotation.Autowired;
     7 import org.springframework.test.context.ContextConfiguration;
     8 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
     9 
    10 import com.mapper.CategoryMapper;
    11 import com.pojo.Category;
    12 
    13 @RunWith(SpringJUnit4ClassRunner.class)
    14 @ContextConfiguration("classpath:applicationContext.xml")
    15 public class Test {
    16 
    17     @Autowired
    18     private CategoryMapper categoryMapper;
    19 
    20     @org.junit.Test
    21     public void testAdd() {
    22         Category category = new Category();
    23         category.setName("new Category");
    24         categoryMapper.add(category);
    25     }
    26 
    27     @org.junit.Test
    28     public void testList() {
    29         System.out.println(categoryMapper);
    30         List<Category> cs = categoryMapper.list();
    31         for (Category c : cs) {
    32             System.out.println(c.getName());
    33         }
    34     }
    35 }
  • 相关阅读:
    www.insidesql.org
    kevinekline----------------- SQLSERVER MVP
    Sys.dm_os_wait_stats Sys.dm_performance_counters
    如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
    VITAM POST MORTEM – ANALYZING DEADLOCKED SCHEDULERS MINI DUMP FROM SQL SERVER
    Cargo, Rust’s Package Manager
    建筑识图入门(初学者 入门)
    Tracing SQL Queries in Real Time for MySQL Databases using WinDbg and Basic Assembler Knowledge
    Microsoft SQL Server R Services
    The Rambling DBA: Jonathan Kehayias
  • 原文地址:https://www.cnblogs.com/lyj-gyq/p/9258531.html
Copyright © 2011-2022 走看看