Răsfoiți Sursa

0117 spring mybatis

Qing 1 an în urmă
părinte
comite
cd6fca76ec
24 a modificat fișierele cu 513 adăugiri și 327 ștergeri
  1. 18 0
      spring-demo/pom.xml
  2. 7 7
      spring-demo/src/main/java/com/sf/druid/dao/AuthorDao.java
  3. 9 9
      spring-demo/src/main/java/com/sf/druid/dao/BookDao.java
  4. 10 0
      spring-demo/src/main/java/com/sf/druid/dao/TypeDao.java
  5. 51 51
      spring-demo/src/main/java/com/sf/druid/dao/impl/AuthorDaoImpl.java
  6. 83 82
      spring-demo/src/main/java/com/sf/druid/dao/impl/BookDaoImpl.java
  7. 18 0
      spring-demo/src/main/java/com/sf/druid/entity/Type.java
  8. 10 6
      spring-demo/src/main/java/com/sf/druid/service/BookService.java
  9. 40 33
      spring-demo/src/main/java/com/sf/druid/service/impl/BookServiceImpl.java
  10. 1 1
      spring-demo/src/main/java/com/sf/resource/ClassPathResourceDemo.java
  11. 68 0
      spring-demo/src/main/resources/bean-mybatis.xml
  12. 0 0
      spring-demo/src/main/resources/druid/bean-druid.xml
  13. 0 0
      spring-demo/src/main/resources/druid/bean-trans-anno.xml
  14. 0 0
      spring-demo/src/main/resources/druid/bean-transaction.xml
  15. 10 0
      spring-demo/src/main/resources/mapper/bookMapper.xml
  16. 9 0
      spring-demo/src/main/resources/mapper/typeMapper.xml
  17. 16 0
      spring-demo/src/main/resources/mybatis-config.xml
  18. 0 0
      spring-demo/src/main/resources/properties/book.properties
  19. 0 0
      spring-demo/src/main/resources/properties/test.properties
  20. 27 0
      spring-demo/src/test/java/com/sf/TestMybatis.java
  21. 51 51
      spring-demo/src/test/java/com/sf/druid/TestBook.java
  22. 1 1
      spring-demo/src/test/java/com/sf/druid/TestDruid.java
  23. 45 47
      spring-demo/src/test/java/com/sf/druid/TestTransAnno.java
  24. 39 39
      spring-demo/src/test/java/com/sf/druid/TestTransaction.java

+ 18 - 0
spring-demo/pom.xml

@@ -109,6 +109,24 @@
             <version>${spring.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis</artifactId>
+            <version>3.5.14</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis-spring</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+
     </dependencies>
 
     <!--解决IDEA中MAVEN项目总是将LANGUAGE LEVEL重置到5的问题

+ 7 - 7
spring-demo/src/main/java/com/sf/druid/dao/AuthorDao.java

@@ -6,11 +6,11 @@ import java.util.List;
 
 public interface AuthorDao {
 
-    List<Author> findAll();
-
-    int insert(Author author);
-
-    int delete(Author author);
-
-    int deleteById(String authorId);
+//    List<Author> findAll();
+//
+//    int insert(Author author);
+//
+//    int delete(Author author);
+//
+//    int deleteById(String authorId);
 }

+ 9 - 9
spring-demo/src/main/java/com/sf/druid/dao/BookDao.java

@@ -6,13 +6,13 @@ import java.util.List;
 public interface BookDao {
     List<Book> findAll();
 
-    int insert(Book book);
-
-    Book findOne(String bookId);
-
-    int delete(Book book);
-
-    int deleteById(String bookId);
-
-    String findAuthorIdById(String bookId);
+//    int insert(Book book);
+//
+//    Book findOne(String bookId);
+//
+//    int delete(Book book);
+//
+//    int deleteById(String bookId);
+//
+//    String findAuthorIdById(String bookId);
 }

+ 10 - 0
spring-demo/src/main/java/com/sf/druid/dao/TypeDao.java

@@ -0,0 +1,10 @@
+package com.sf.druid.dao;
+
+import com.sf.druid.entity.Type;
+
+import java.util.List;
+
+public interface TypeDao {
+
+    List<Type> findAll();
+}

+ 51 - 51
spring-demo/src/main/java/com/sf/druid/dao/impl/AuthorDaoImpl.java

@@ -18,54 +18,54 @@ import java.util.List;
 //  @Controller
 //  @Service
 //  实现接口本身 所有dao的通用处理 可不可以抽象成父类 BaseDao  spring提供 JdbcDaoSupport
-@Repository
-public class AuthorDaoImpl extends JdbcDaoSupport implements AuthorDao {
-
-    @Autowired
-    public void setDataSourceSelf(DataSource dataSource) {
-        setDataSource(dataSource);
-    }
-
-    @Override
-    public List<Author> findAll() {
-        List<Author> authorList = this.getJdbcTemplate().query(
-                "select * FROM author",
-                new BeanPropertyRowMapper<Author>(Author.class));
-        // BeanPropertyRowMapper 将javabean实体类中的属性映射成数据库中行数据的 处理类
-        return authorList;
-    }
-
-    @Override
-    public int insert(Author author) {
-        // 文本块
-        // Illegal text block start: missing new line after opening quotes
-        // 要从第二行开始
-        String sql = """
-                insert into author(author_name,author_desc) values(?,?)
-                """;
-        Object[] args = {author.getAuthorName(), author.getAuthorDesc()};
-        int update = this.getJdbcTemplate().update(sql, args);
-        return update;
-    }
-
-    @Override
-    public int delete(Author author) {
-        String sql = """
-                delete from author where id = ?
-                """;
-        Object[] args = {author.getId()};
-        int update = this.getJdbcTemplate().update(sql, args);
-        return update;
-    }
-
-    @Override
-    public int deleteById(String authorId) {
-        String sql = """
-                delete from author where id = ?
-                """;
-        // 把string 转化成long的方式  使用包装类  long -> Long
-        // Integer.parseInt(authorId);  也可以转化成 int
-        int update = this.getJdbcTemplate().update(sql, Long.parseLong(authorId));
-        return update;
-    }
-}
+//@Repository
+//public class AuthorDaoImpl extends JdbcDaoSupport implements AuthorDao {
+//
+//    @Autowired
+//    public void setDataSourceSelf(DataSource dataSource) {
+//        setDataSource(dataSource);
+//    }
+//
+//    @Override
+//    public List<Author> findAll() {
+//        List<Author> authorList = this.getJdbcTemplate().query(
+//                "select * from author",
+//                new BeanPropertyRowMapper<Author>(Author.class));
+//        // BeanPropertyRowMapper 将javabean实体类中的属性映射成数据库中行数据的 处理类
+//        return authorList;
+//    }
+//
+//    @Override
+//    public int insert(Author author) {
+//        // 文本块
+//        // Illegal text block start: missing new line after opening quotes
+//        // 要从第二行开始
+//        String sql = """
+//                insert into author(author_name,author_desc) values(?,?)
+//                """;
+//        Object[] args = {author.getAuthorName(), author.getAuthorDesc()};
+//        int update = this.getJdbcTemplate().update(sql, args);
+//        return update;
+//    }
+//
+//    @Override
+//    public int delete(Author author) {
+//        String sql = """
+//                delete from author where id = ?
+//                """;
+//        Object[] args = {author.getId()};
+//        int update = this.getJdbcTemplate().update(sql, args);
+//        return update;
+//    }
+//
+//    @Override
+//    public int deleteById(String authorId) {
+//        String sql = """
+//                delete from author where id = ?
+//                """;
+//        // 把string 转化成long的方式  使用包装类  long -> Long
+//        // Integer.parseInt(authorId);  也可以转化成 int
+//        int update = this.getJdbcTemplate().update(sql, Long.parseLong(authorId));
+//        return update;
+//    }
+//}

+ 83 - 82
spring-demo/src/main/java/com/sf/druid/dao/impl/BookDaoImpl.java

@@ -14,86 +14,87 @@ import java.util.List;
 // dao层  对数据增删改查的一层
 //@Component
 //  @Repository 是一个具体的@Component  是操作数据库的bean
-@Repository("bookDao")
-public class BookDaoImpl implements BookDao {
 
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
-
-    @Override
-    public List<Book> findAll() {
-        List<Book> bookList = jdbcTemplate.
-                query("select * from book", new BeanPropertyRowMapper<Book>(Book.class));
-        return bookList;
-    }
-
-    @Override
-    public int insert(Book book) {
-        String sql = """
-                insert into book(book_id,book_name,type_id,author_id,author_name,book_img,book_desc) 
-                values(?,?,?,?,?,?,?)
-                """;
-        Object[] args = {book.getBookId(), book.getBookName(), book.getTypeId(),
-                book.getAuthorId(), book.getAuthorName(), book.getBookImg(), book.getBookDesc()};
-        int update = jdbcTemplate.update(sql, args);
-        return update;
-    }
-
-    @Override
-    public Book findOne(String bookId) {
-        Book book = jdbcTemplate.queryForObject("select * from book where book_id = ?",
-                new BeanPropertyRowMapper<Book>(Book.class), bookId);
-        return book;
-    }
-
-    @Override
-    public int delete(Book book) {
-        // id book_id
-        String sql = """
-                delete from book where book_id = ?
-                """;
-        Object[] args = {book.getBookId()};
-        int update = jdbcTemplate.update(sql, args);
-        return update;
-    }
-
-    @Override
-    public int deleteById(String bookId) {
-        String sql = """
-                delete from book where book_id = ?
-                """;
-        int update = jdbcTemplate.update(sql, bookId);
-        return update;
-    }
-
-    @Override
-    public String findAuthorIdById(String bookId) {
-        // 找到一行数据 或者 一个数据
-        Book book = jdbcTemplate.queryForObject(
-                "select * from book where book_id = ?",
-                new BeanPropertyRowMapper<Book>(Book.class), bookId
-        );
-        System.out.println(book);
-
-        String authorId = jdbcTemplate.queryForObject(
-                "select author_id from book where book_id = ?",
-//                new BookRowMapper(), bookId
-                new SingleColumnRowMapper<>(String.class), bookId
-        );
-        System.out.println(authorId);
-
-        return book.getAuthorId();
-    }
-
-    static class BookRowMapper implements RowMapper<String> {
-        public static final BookRowMapper INSTANCE = new BookRowMapper();
-
-        private BookRowMapper() {
-        }
-
-        @Override
-        public String mapRow(ResultSet rs, int rowNum) throws SQLException {
-            return rs.getString("author_id");
-        }
-    }
-}
+//@Repository("bookDao")
+//public class BookDaoImpl implements BookDao {
+//
+//    @Autowired
+//    private JdbcTemplate jdbcTemplate;
+//
+//    @Override
+//    public List<Book> findAll() {
+//        List<Book> bookList = jdbcTemplate.
+//                query("select * from book", new BeanPropertyRowMapper<Book>(Book.class));
+//        return bookList;
+//    }
+//
+//    @Override
+//    public int insert(Book book) {
+//        String sql = """
+//                insert into book(book_id,book_name,type_id,author_id,author_name,book_img,book_desc)
+//                values(?,?,?,?,?,?,?)
+//                """;
+//        Object[] args = {book.getBookId(), book.getBookName(), book.getTypeId(),
+//                book.getAuthorId(), book.getAuthorName(), book.getBookImg(), book.getBookDesc()};
+//        int update = jdbcTemplate.update(sql, args);
+//        return update;
+//    }
+//
+//    @Override
+//    public Book findOne(String bookId) {
+//        Book book = jdbcTemplate.queryForObject("select * from book where book_id = ?",
+//                new BeanPropertyRowMapper<Book>(Book.class), bookId);
+//        return book;
+//    }
+//
+//    @Override
+//    public int delete(Book book) {
+//        // id book_id
+//        String sql = """
+//                delete from book where book_id = ?
+//                """;
+//        Object[] args = {book.getBookId()};
+//        int update = jdbcTemplate.update(sql, args);
+//        return update;
+//    }
+//
+//    @Override
+//    public int deleteById(String bookId) {
+//        String sql = """
+//                delete from book where book_id = ?
+//                """;
+//        int update = jdbcTemplate.update(sql, bookId);
+//        return update;
+//    }
+//
+//    @Override
+//    public String findAuthorIdById(String bookId) {
+//        // 找到一行数据 或者 一个数据
+//        Book book = jdbcTemplate.queryForObject(
+//                "select * from book where book_id = ?",
+//                new BeanPropertyRowMapper<Book>(Book.class), bookId
+//        );
+//        System.out.println(book);
+//
+//        String authorId = jdbcTemplate.queryForObject(
+//                "select author_id from book where book_id = ?",
+////                new BookRowMapper(), bookId
+//                new SingleColumnRowMapper<>(String.class), bookId
+//        );
+//        System.out.println(authorId);
+//
+//        return book.getAuthorId();
+//    }
+//
+//    static class BookRowMapper implements RowMapper<String> {
+//        public static final BookRowMapper INSTANCE = new BookRowMapper();
+//
+//        private BookRowMapper() {
+//        }
+//
+//        @Override
+//        public String mapRow(ResultSet rs, int rowNum) throws SQLException {
+//            return rs.getString("author_id");
+//        }
+//    }
+//}

+ 18 - 0
spring-demo/src/main/java/com/sf/druid/entity/Type.java

@@ -0,0 +1,18 @@
+package com.sf.druid.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class Type implements Serializable {
+    private Long id;
+    private String typeId;
+    private String typeName;
+}

+ 10 - 6
spring-demo/src/main/java/com/sf/druid/service/BookService.java

@@ -3,13 +3,17 @@ package com.sf.druid.service;
 import com.sf.druid.entity.Author;
 import com.sf.druid.entity.Book;
 
+import java.util.List;
+
 public interface BookService {
     // 通过ctrl + alt可以进入实现逻辑
-    void insert(Author author, Book book);
-
-    void delete(Author author, Book book);
-
-    void deleteById(String authorId, String bookId);
+//    void insert(Author author, Book book);
+//
+//    void delete(Author author, Book book);
+//
+//    void deleteById(String authorId, String bookId);
+//
+//    void deleteByBookId(String bookId);
 
-    void deleteByBookId(String bookId);
+    List<Book> queryBooks();
 }

+ 40 - 33
spring-demo/src/main/java/com/sf/druid/service/impl/BookServiceImpl.java

@@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 @Service
 public class BookServiceImpl implements BookService {
 
@@ -26,40 +28,45 @@ public class BookServiceImpl implements BookService {
      * 注解的含义  是在这个方法中 增加事务处理
      * 事务处理的本质是 切面 是高级通知(顾问)
      */
-    @Override
-    @Transactional
-    public void insert(Author author, Book book) {
-
-        int result1 = authorDao.insert(author);
-        System.out.println("添加作者的结果: " + result1);
-//        System.out.println(1 / 0);
-        int result = bookDao.insert(book);
-        System.out.println("添加书籍的结果: " + result);
-
-    }
-
-    @Override
-    @Transactional
-    public void delete(Author author, Book book) {
-        bookDao.delete(book);
-        authorDao.delete(author);
-    }
-
-    @Override
-    public void deleteById(String authorId, String bookId) {
-        bookDao.deleteById(bookId);
-        authorDao.deleteById(authorId);
-    }
+//    @Override
+//    @Transactional
+//    public void insert(Author author, Book book) {
+//
+//        int result1 = authorDao.insert(author);
+//        System.out.println("添加作者的结果: " + result1);
+////        System.out.println(1 / 0);
+//        int result = bookDao.insert(book);
+//        System.out.println("添加书籍的结果: " + result);
+//
+//    }
+//
+//    @Override
+//    @Transactional
+//    public void delete(Author author, Book book) {
+//        bookDao.delete(book);
+//        authorDao.delete(author);
+//    }
+//
+//    @Override
+//    public void deleteById(String authorId, String bookId) {
+//        bookDao.deleteById(bookId);
+//        authorDao.deleteById(authorId);
+//    }
+//
+//    @Override
+//    public void deleteByBookId(String bookId) {
+//        // 只有bookId 怎么获取authorId
+//        //  可以通过bookId  找到对应的author_id  然后去author表删除数据
+//        //   bookDao.findAuthorIdById(bookId);
+//        //   authorDao.deleteById(authorId);
+//        //   bookDao.deleteById(bookId);
+//        String authorId = bookDao.findAuthorIdById(bookId);
+//        authorDao.deleteById(authorId);
+//        bookDao.deleteById(bookId);
+//    }
 
     @Override
-    public void deleteByBookId(String bookId) {
-        // 只有bookId 怎么获取authorId
-        //  可以通过bookId  找到对应的author_id  然后去author表删除数据
-        //   bookDao.findAuthorIdById(bookId);
-        //   authorDao.deleteById(authorId);
-        //   bookDao.deleteById(bookId);
-        String authorId = bookDao.findAuthorIdById(bookId);
-        authorDao.deleteById(authorId);
-        bookDao.deleteById(bookId);
+    public List<Book> queryBooks() {
+        return bookDao.findAll();
     }
 }

+ 1 - 1
spring-demo/src/main/java/com/sf/resource/ClassPathResourceDemo.java

@@ -20,6 +20,6 @@ public class ClassPathResourceDemo {
     }
 
     public static void main(String[] args) throws Exception {
-        loadAndReadUrlResource("test.properties");
+        loadAndReadUrlResource("properties/test.properties");
     }
 }

+ 68 - 0
spring-demo/src/main/resources/bean-mybatis.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
+  https://www.springframework.org/schema/beans/spring-beans.xsd
+  http://www.springframework.org/schema/context
+  https://www.springframework.org/schema/context/spring-context.xsd
+  http://www.springframework.org/schema/tx
+  http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+    <!-- 读取java配置文件,替换占位符数据 -->
+    <context:property-placeholder location="classpath:db.properties"/>
+    <!-- 从底层往上层配置 -->
+    <!-- 管理第三方的DataSource -->
+    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
+        <property name="url" value="${jdbc.url}"/>
+        <property name="username" value="${jdbc.username}"/>
+        <property name="password" value="${jdbc.password}"/>
+        <property name="driverClassName" value="${jdbc.driver}"/>
+    </bean>
+
+    <!--
+        配置SqlSessionFactory, 是使用sql的会话工厂
+        SqlSession  指的是在和mysql连接时的一次会话
+        配置数据源、通用配置文件(mybatis-config.xml)、具体的配置文件,也就是所有mapper.xml
+        因为具体的配置文件是多个  所有使用扫描的方式  会把所有在mapper中的 .xml后缀的文件都扫描到
+    -->
+    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
+        <!-- 注入dataSource -->
+        <property name="dataSource" ref="dataSource"/>
+        <property name="configLocation" value="classpath:mybatis-config.xml"/>
+        <property name="mapperLocations" value="classpath*:mapper/**/*.xml"/>
+    </bean>
+
+    <!-- 配置Mapper代理对象方式一:MapperFactoryBean(了解) -->
+    <!-- 通过MapperFactoryBean生成的代理对象,一次只能针对一个接口进行生成 -->
+    <!--<bean id="accountMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
+    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
+    <property name="mapperInterface" value="top.alanshelby.mapper.AccountMapper"></property>
+  </bean>-->
+    <!-- 配置Mapper代理对象方式二:MapperScannerConfigurer -->
+    <!-- 批量代理对象的生成 -->
+    <!-- 注意事项:mapper接口类和mapper映射文件同包同名 -->
+    <!--
+      在配置了mybatis的sqlSessionFactory后  确定了mybatis的基本配置文件
+      接下来需要将mybatis的文件和 接口相关联 因为要关联的接口有多个  所以使用扫描的方式
+      使用配置sqlSessionFactoryBeanName,也就是上面那个bean的名字,用value赋值进去,来关联
+    -->
+    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
+        <!-- 指定需要生成代理的接口所在的包名 -->
+        <property name="basePackage" value="com.sf.druid.dao"/>
+        <!-- 注意事项:千万不要配置SqlSessionFactory,要配置sqlSessionFactoryBeanName -->
+        <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> -->
+        <!-- 指定MyBatis配置文件的位置 -->
+        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
+    </bean>
+
+    <context:component-scan base-package="com.sf.druid.service"></context:component-scan>
+    <!-- 配置平台事务管理器 -->
+    <bean id="transactionManager"
+          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
+        <property name="dataSource" ref="dataSource"></property>
+    </bean>
+    <!-- 开启事务注解配置 -->
+    <tx:annotation-driven transaction-manager="transactionManager" mode="proxy"/>
+</beans>

+ 0 - 0
spring-demo/src/main/resources/bean-druid.xml → spring-demo/src/main/resources/druid/bean-druid.xml


+ 0 - 0
spring-demo/src/main/resources/bean-trans-anno.xml → spring-demo/src/main/resources/druid/bean-trans-anno.xml


+ 0 - 0
spring-demo/src/main/resources/bean-transaction.xml → spring-demo/src/main/resources/druid/bean-transaction.xml


+ 10 - 0
spring-demo/src/main/resources/mapper/bookMapper.xml

@@ -0,0 +1,10 @@
+<?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.sf.druid.dao.BookDao">
+    <!-- 查询 -->
+    <select id="findAll" resultType="com.sf.druid.entity.Book">
+        select * from book
+    </select>
+</mapper>

+ 9 - 0
spring-demo/src/main/resources/mapper/typeMapper.xml

@@ -0,0 +1,9 @@
+<?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.sf.druid.dao.TypeDao">
+    <select id="findAll" resultType="com.sf.druid.entity.Type">
+        select * from type
+    </select>
+</mapper>

+ 16 - 0
spring-demo/src/main/resources/mybatis-config.xml

@@ -0,0 +1,16 @@
+<?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>
+    <!-- 开启延迟加载 该项默认为false,即所有关联属性都会在初始化时加载
+        true表示延迟按需加载 -->
+    <settings>
+        <setting name="lazyLoadingEnabled" value="true"/>
+        <!-- 开启二级缓存 -->
+        <setting name="cacheEnabled" value="true"/>
+        <!-- 配置mybatis自动转换为驼峰式命名 -->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+    </settings>
+</configuration>

+ 0 - 0
spring-demo/src/main/resources/book.properties → spring-demo/src/main/resources/properties/book.properties


+ 0 - 0
spring-demo/src/main/resources/test.properties → spring-demo/src/main/resources/properties/test.properties


+ 27 - 0
spring-demo/src/test/java/com/sf/TestMybatis.java

@@ -0,0 +1,27 @@
+package com.sf;
+
+import com.sf.druid.dao.TypeDao;
+import com.sf.druid.entity.Book;
+import com.sf.druid.service.BookService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
+
+import java.util.List;
+
+@SpringJUnitConfig(locations = "classpath:bean-mybatis.xml")
+public class TestMybatis {
+
+    @Autowired
+    private BookService bookService;
+
+    @Autowired
+    private TypeDao typeDao;
+
+    @Test
+    public void test() {
+//        List<Book> books = bookService.queryBooks();
+//        System.out.println(books);
+        System.out.println(typeDao.findAll());
+    }
+}

+ 51 - 51
spring-demo/src/test/java/com/sf/druid/TestBook.java

@@ -15,59 +15,59 @@ import java.util.List;
 @SpringJUnitConfig(SpringConfig.class)
 public class TestBook {
 
-    @Autowired
-    private BookDao bookDao;
-
-    @Autowired
-    private AuthorDao authorDao;
-
-    @Autowired
-    private BookService bookService;
-    // bookService = new BookServiceImpl();
-
-    @Test
-    public void test() {
-
-//        Book book = new Book();
-//        book.setBookId("");
-//        book.setBookName("");
-
-        // 建造者模式  -- 创建对象的一种设计模式
-        //   可以通过链式编程的方法 把属性都设置进去  原理就是每个方法都返回自身
+//    @Autowired
+//    private BookDao bookDao;
+//
+//    @Autowired
+//    private AuthorDao authorDao;
+//
+//    @Autowired
+//    private BookService bookService;
+//    // bookService = new BookServiceImpl();
+//
+//    @Test
+//    public void test() {
+//
+////        Book book = new Book();
+////        book.setBookId("");
+////        book.setBookName("");
+//
+//        // 建造者模式  -- 创建对象的一种设计模式
+//        //   可以通过链式编程的方法 把属性都设置进去  原理就是每个方法都返回自身
+////        Book book = Book.builder().bookId("2222").bookName("疯狂java讲义").typeId("2")
+////                .authorId("2").authorName("李刚").bookImg("/img/111111.png").bookDesc("java入门书籍")
+////                .build();
+////        int insert = bookDao.insert(book);
+////        System.out.println(insert);
+////
+////        List<Book> books = bookDao.findAll();
+////        System.out.println(books);
+//
+//
+//        Author author = Author.builder()
+//                .authorName("李刚").authorDesc("老师")
+//                .build();
+//        int authorInsert = authorDao.insert(author);
+////        System.out.println(authorInsert);
+////        List<Author> authors = authorDao.findAll();
+////        System.out.println(authors);
+//
+//    }
+//
+//    @Test
+//    public void testService() {
 //        Book book = Book.builder().bookId("2222").bookName("疯狂java讲义").typeId("2")
 //                .authorId("2").authorName("李刚").bookImg("/img/111111.png").bookDesc("java入门书籍")
 //                .build();
-//        int insert = bookDao.insert(book);
-//        System.out.println(insert);
+//        Author author = Author.builder()
+//                .authorName("李刚").authorDesc("老师")
+//                .build();
+//        bookService.insert(author, book);
 //
-//        List<Book> books = bookDao.findAll();
-//        System.out.println(books);
-
-
-        Author author = Author.builder()
-                .authorName("李刚").authorDesc("老师")
-                .build();
-        int authorInsert = authorDao.insert(author);
-//        System.out.println(authorInsert);
-//        List<Author> authors = authorDao.findAll();
-//        System.out.println(authors);
-
-    }
-
-    @Test
-    public void testService() {
-        Book book = Book.builder().bookId("2222").bookName("疯狂java讲义").typeId("2")
-                .authorId("2").authorName("李刚").bookImg("/img/111111.png").bookDesc("java入门书籍")
-                .build();
-        Author author = Author.builder()
-                .authorName("李刚").authorDesc("老师")
-                .build();
-        bookService.insert(author, book);
-
-        // 先写实体类 Book -> 再写dao -> BookDao BookDaoImpl
-        // 再写另外的实体类和dao   Author  AuthorDao  AuthorDaoImpl
-        // 在这个过程中 写一点测一点  测试的最小单元是方法
-        // 实现功能  Service -> 组装dao的调用 以及dao返回的数据
-
-    }
+//        // 先写实体类 Book -> 再写dao -> BookDao BookDaoImpl
+//        // 再写另外的实体类和dao   Author  AuthorDao  AuthorDaoImpl
+//        // 在这个过程中 写一点测一点  测试的最小单元是方法
+//        // 实现功能  Service -> 组装dao的调用 以及dao返回的数据
+//
+//    }
 }

+ 1 - 1
spring-demo/src/test/java/com/sf/druid/TestDruid.java

@@ -11,7 +11,7 @@ public class TestDruid {
     public void test() {
         try {
             ApplicationContext context =
-                    new ClassPathXmlApplicationContext("bean-druid.xml");
+                    new ClassPathXmlApplicationContext("druid/bean-druid.xml");
             DruidDataSource dataSource = context.getBean(DruidDataSource.class);
             System.out.println(dataSource.getUrl());
             System.out.println(dataSource.getDriverClassName());

+ 45 - 47
spring-demo/src/test/java/com/sf/druid/TestTransAnno.java

@@ -9,60 +9,58 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
 
-import java.util.Scanner;
-
-@SpringJUnitConfig(locations = "classpath:bean-trans-anno.xml")
+@SpringJUnitConfig(locations = "classpath:druid/bean-trans-anno.xml")
 public class TestTransAnno {
 
     @Autowired
     private BookService bookService;
 
-    @Test
-    public void test() {
-
-        Book book = Book.builder().bookId("4444").bookName("深入分析Java Web技术内幕").typeId("2")
-                .authorId("4").authorName("许令波").bookImg("/img/111111.png").bookDesc("java进阶书籍")
-                .build();
-        Author author = Author.builder()
-                .authorName("许令波").authorDesc("程序员")
-                .build();
-        bookService.insert(author, book);
-    }
-
-    @Autowired
-    private BookDao bookDao;
-    @Autowired
-    private AuthorDao authorDao;
-
-    @Test
-    public void testDao() {
-//        Book book = bookDao.findOne("11111");
-//        System.out.println(book);
-//        Book book = Book.builder().bookId("11112").build();
-//        System.out.println(bookDao.delete(book));
+//    @Test
+//    public void test() {
+//
+//        Book book = Book.builder().bookId("4444").bookName("深入分析Java Web技术内幕").typeId("2")
+//                .authorId("4").authorName("许令波").bookImg("/img/111111.png").bookDesc("java进阶书籍")
+//                .build();
+//        Author author = Author.builder()
+//                .authorName("许令波").authorDesc("程序员")
+//                .build();
+//        bookService.insert(author, book);
+//    }
+//
+//    @Autowired
+//    private BookDao bookDao;
+//    @Autowired
+//    private AuthorDao authorDao;
 //
+//    @Test
+//    public void testDao() {
+////        Book book = bookDao.findOne("11111");
+////        System.out.println(book);
+////        Book book = Book.builder().bookId("11112").build();
+////        System.out.println(bookDao.delete(book));
+////
+////        Author author = Author.builder().id(16L).build();
+////        System.out.println(authorDao.delete(author));
+//
+////        bookDao.findAuthorIdById("3333");
+//        System.out.println(authorDao.findAll());
+//    }
+//
+//    // 需求 通过删除作者和书籍 来使用声明式事务
+//    // insert(Book book,Author author);
+//    // delete(Book book,Author author);
+//    @Test
+//    public void testService() {
+//        Book book = Book.builder().bookId("11112").build();
 //        Author author = Author.builder().id(16L).build();
-//        System.out.println(authorDao.delete(author));
-
-//        bookDao.findAuthorIdById("3333");
-        System.out.println(authorDao.findAll());
-    }
-
-    // 需求 通过删除作者和书籍 来使用声明式事务
-    // insert(Book book,Author author);
-    // delete(Book book,Author author);
-    @Test
-    public void testService() {
-        Book book = Book.builder().bookId("11112").build();
-        Author author = Author.builder().id(16L).build();
-        bookService.delete(author, book);
-    }
-
-    @Test
-    public void testServiceById() {
-//        bookService.deleteById("1", "11111");
-        bookService.deleteByBookId("2222");
-    }
+//        bookService.delete(author, book);
+//    }
+//
+//    @Test
+//    public void testServiceById() {
+////        bookService.deleteById("1", "11111");
+//        bookService.deleteByBookId("2222");
+//    }
 
 
     @Test

+ 39 - 39
spring-demo/src/test/java/com/sf/druid/TestTransaction.java

@@ -13,47 +13,47 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
 import java.util.List;
 
 //@SpringJUnitConfig(SpringConfig.class)
-@SpringJUnitConfig(locations = "classpath:bean-transaction.xml")
+@SpringJUnitConfig(locations = "classpath:druid/bean-transaction.xml")
 public class TestTransaction {
 
-    @Autowired
-    private BookDao bookDao;
-
-    @Autowired
-    private AuthorDao authorDao;
-
-    @Autowired
-    private BookService bookService;
-
-    @Test
-    public void test() {
-        List<Book> books = bookDao.findAll();
-        System.out.println(books);
-
-//        Book book = Book.builder().bookId("2222").bookName("疯狂java讲义").typeId("2")
-//                .authorId("2").authorName("李刚").bookImg("/img/111111.png").bookDesc("java入门书籍")
+//    @Autowired
+//    private BookDao bookDao;
+//
+//    @Autowired
+//    private AuthorDao authorDao;
+//
+//    @Autowired
+//    private BookService bookService;
+//
+//    @Test
+//    public void test() {
+//        List<Book> books = bookDao.findAll();
+//        System.out.println(books);
+//
+////        Book book = Book.builder().bookId("2222").bookName("疯狂java讲义").typeId("2")
+////                .authorId("2").authorName("李刚").bookImg("/img/111111.png").bookDesc("java入门书籍")
+////                .build();
+////        int insert = bookDao.insert(book);
+////        System.out.println(insert);
+//
+////        List<Author> authors = authorDao.findAll();
+////        System.out.println(authors);
+//        Author author = Author.builder()
+//                .authorName("李刚").authorDesc("老师")
 //                .build();
-//        int insert = bookDao.insert(book);
-//        System.out.println(insert);
-
-//        List<Author> authors = authorDao.findAll();
-//        System.out.println(authors);
-        Author author = Author.builder()
-                .authorName("李刚").authorDesc("老师")
-                .build();
-        int authorInsert = authorDao.insert(author);
-        System.out.println(authorInsert);
-    }
-
-    @Test
-    public void testService() {
-        Book book = Book.builder().bookId("3333").bookName("深入理解java虚拟机").typeId("2")
-                .authorId("3").authorName("周志明").bookImg("/img/111111.png").bookDesc("java进阶书籍")
-                .build();
-        Author author = Author.builder()
-                .authorName("周志明").authorDesc("程序员")
-                .build();
-        bookService.insert(author, book);
-    }
+//        int authorInsert = authorDao.insert(author);
+//        System.out.println(authorInsert);
+//    }
+//
+//    @Test
+//    public void testService() {
+//        Book book = Book.builder().bookId("3333").bookName("深入理解java虚拟机").typeId("2")
+//                .authorId("3").authorName("周志明").bookImg("/img/111111.png").bookDesc("java进阶书籍")
+//                .build();
+//        Author author = Author.builder()
+//                .authorName("周志明").authorDesc("程序员")
+//                .build();
+//        bookService.insert(author, book);
+//    }
 }