{"id":14982982,"url":"https://github.com/hisenyuan/ssm_booksystem","last_synced_at":"2025-04-05T20:09:07.803Z","repository":{"id":130167582,"uuid":"89266757","full_name":"hisenyuan/SSM_BookSystem","owner":"hisenyuan","description":"ssm demo，ssm详细教程，SSM简明教程：简单的十步教你搭建人生第一个SSM框架[ SSM框架整合教程(spring+spring mvc+mybatis+redis+maven+idea+bootstrap) ]","archived":false,"fork":false,"pushed_at":"2019-04-30T03:44:46.000Z","size":227,"stargazers_count":409,"open_issues_count":1,"forks_count":197,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-05T20:09:01.912Z","etag":null,"topics":["bookdao","bootstrap","cache","demo","idea","java","java-book","logback","mapper","maven","mybatis","redis","spring","spring-mvc","ssm","ssm-booksystem"],"latest_commit_sha":null,"homepage":"https://hisen.me","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hisenyuan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-04-24T17:11:05.000Z","updated_at":"2025-02-25T00:31:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"5ed605f8-5198-4e99-80ac-043a0e6a2bcf","html_url":"https://github.com/hisenyuan/SSM_BookSystem","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hisenyuan%2FSSM_BookSystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hisenyuan%2FSSM_BookSystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hisenyuan%2FSSM_BookSystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hisenyuan%2FSSM_BookSystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hisenyuan","download_url":"https://codeload.github.com/hisenyuan/SSM_BookSystem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247393572,"owners_count":20931813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookdao","bootstrap","cache","demo","idea","java","java-book","logback","mapper","maven","mybatis","redis","spring","spring-mvc","ssm","ssm-booksystem"],"created_at":"2024-09-24T14:06:32.116Z","updated_at":"2025-04-05T20:09:07.780Z","avatar_url":"https://github.com/hisenyuan.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 项目基本情况\n1. 简单的SMM框架使用\n2. 从0到1慢慢丰富，不定时更新新的内容到项目中\n3. 如果有什么问题，欢迎指正或者交流\n4. 有好的学习资料欢迎共享\n4. 本项目随便使用，没有任何限制\n\n# SSM_BookSystem SSM框架基础\nSSM_BookSystem V0 - 版本详细说明\n\n说明：本项目目前包含基础的CRUD\n\n作者：hisenyuan\n\n主页：\u003ca href=\"http://hisen.me\" target=\"_blank\"\u003ehisen.me\u003c/a\u003e\n\n博客：\u003ca href=\"http://www.cnblogs.com/hisen/\" target=\"_blank\"\u003ehttp://www.cnblogs.com/hisen/\u003c/a\u003e\n\n预览：\n\n\u003cimg src=\"http://wx3.sinaimg.cn/mw690/b2e389b6ly1ff8gro6a4vj20tr0ivju2.jpg\" /\u003e\n\n\u003cimg src=\"http://wx1.sinaimg.cn/mw690/b2e389b6ly1ff8grp3x4uj20ql0emdhw.jpg\" /\u003e\n\n\u003cimg src=\"http://wx4.sinaimg.cn/mw690/b2e389b6ly1fgctkj7kx9j20ml0ge0uh.jpg\" /\u003e\n\n---\n\n搭建过程：\n---\n一般idea创建工程的过程\n\n打开idea ---\u003e File  ---\u003e new ---\u003e project  ---\u003e maven  ---\u003e \n\ncreate from archetype ---\u003e maven-archetype-webapp ---\u003e 接下来一般默认即可\n\n最后在main目录下新建java文件夹，并且mark as source root。\n\n首先创建如下的目录结构即可：\n```\n├── java\n│   └── com\n│       └── hisen\n│           ├── dao\n│           │   └── BookDao.java\n│           ├── entity\n│           │   └── Book.java\n│           ├── service\n│           │   ├── BookService.java\n│           │   └── impl\n│           │       └── BookServiceImpl.java\n│           └── web\n│               └── BookController.java\n├── resources\n│   ├── jdbc.properties\n│   ├── logback.xml\n│   ├── mapper\n│   │   └── BookMapper.xml\n│   ├── mybatis-config.xml\n│   └── spring\n│       ├── spring-dao.xml\n│       ├── spring-service.xml\n│       └── spring-web.xml\n└── webapp\n    ├── index.jsp\n    └── WEB-INF\n        ├── jsp\n        │   ├── detail.jsp\n        │   └── list.jsp\n        └── web.xml\n```\n\n第一步：添加Spring、Spring MVC、Mybatis的依赖\n---\n\n都配有详细的说明，这里不再重复\n\n详情请看\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/pom.xml\" target=\"_blank\"\u003epom.xml\u003c/a\u003e\n\n第二步：添加数据库配置文件\n---\n```\n├── resources\n│   ├── jdbc.properties\n```\n创建数据库配置文件，内容如下\n```\njdbc.driver=com.mysql.jdbc.Driver\njdbc.url=jdbc:mysql://127.0.0.1:3306/booksystem?useUnicode=true\u0026characterEncoding=utf8\njdbc.username=root\njdbc.password=hisen\n```\n这里需要创建一个数据库，名为：booksystem\n\n建表语句如下：\n```\nCREATE TABLE `book` (\n  `book_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '图书ID',\n  `name` varchar(100) NOT NULL COMMENT '图书名称',\n  `number` int(11) NOT NULL COMMENT '图书数量',\n  `detail` varchar(200) NOT NULL COMMENT '图书描述',\n  PRIMARY KEY (`book_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='图书表'\n```\n表结构如下：\n```\n+---------+--------------+------+-----+---------+----------------+\n| Field   | Type         | Null | Key | Default | Extra          |\n+---------+--------------+------+-----+---------+----------------+\n| book_id | bigint(20)   | NO   | PRI | NULL    | auto_increment |\n| name    | varchar(100) | NO   |     | NULL    |                |\n| number  | int(11)      | NO   |     | NULL    |                |\n| detail  | varchar(200) | NO   |     | NULL    |                |\n+---------+--------------+------+-----+---------+----------------+\n```\n第三步：添加mybatis配置文件\n---\n```\n├── resources\n│   ├── mybatis-config.xml\n```\n在resources目录下新建文件：mybatis-config.xml\n\n内容如下：\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003e\n\u003c!DOCTYPE configuration\n  PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n  \"http://mybatis.org/dtd/mybatis-3-config.dtd\"\u003e\n\u003cconfiguration\u003e\n  \u003c!-- 配置全局属性 --\u003e\n  \u003csettings\u003e\n    \u003c!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 --\u003e\n    \u003csetting name=\"useGeneratedKeys\" value=\"true\" /\u003e\n    \u003c!-- 使用列别名替换列名 默认:true --\u003e\n    \u003csetting name=\"useColumnLabel\" value=\"true\" /\u003e\n    \u003c!-- 开启驼峰命名转换:Table{create_time} -\u003e Entity{createTime} --\u003e\n    \u003csetting name=\"mapUnderscoreToCamelCase\" value=\"true\" /\u003e\n  \u003c/settings\u003e\n\u003c/configuration\u003e\n```\n第四步：添加Spring配置文件\n---\n在resources/spring目录下新建三个文件：\n```\n│   └── spring\n│       ├── spring-dao.xml\n│       ├── spring-service.xml\n│       └── spring-web.xml\n```\n详细内容详见：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/tree/master/BookSystem_V0/src/main/resources/spring\" target=\"_blank\"\u003eresources/spring/\u003c/a\u003e\n\n第五步：添加logback配置文件\n---\nlogback配置比log4j要简单点，功能类似\n```\n├── resources\n│   ├── logback.xml\n```\n在resources文件夹下新建文件：logback.xml\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003e\n\u003cconfiguration debug=\"true\"\u003e\n  \u003cappender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\"\u003e\n    \u003cencoder\u003e\n      \u003cpattern\u003e%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n\u003c/pattern\u003e\n    \u003c/encoder\u003e\n  \u003c/appender\u003e\n  \u003c!--开启debug日志模式，在控制台打印日志--\u003e\n  \u003croot level=\"debug\"\u003e\n    \u003cappender-ref ref=\"STDOUT\" /\u003e\n  \u003c/root\u003e\n\u003c/configuration\u003e\n```\n第六步：创建DAO、entity\n---\n如下两个文件：BookDao.java、Book.java\n```\n│   └── com\n│       └── hisen\n│           ├── dao\n│           │   └── BookDao.java\n│           ├── entity\n│           │   └── Book.java\n```\n详细内容：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/main/java/com/hisen/dao/BookDao.java\" target=\"_blank\"\u003eBookDao.java\u003c/a\u003e\n\n详细内容：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/main/java/com/hisen/entity/Book.java\" target=\"_blank\"\u003eBook.java\u003c/a\u003e\n\n第七步：创建mybatis mapper文件\n---\n在resources/mapper/目录下创建：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/main/resources/mapper/BookMapper.xml\" target=\"_blank\"\u003eresources/mapper/BookMapper.xml\u003c/a\u003e\n\n在mapper文件中需要用到**第六步**的内容\n\n创建测试类：\n\n1. 测试基类：查看代码\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/test/com/hisen/test/BaseTest.java\" target=\"_blank\"\u003eBaseTest.java\u003c/a\u003e\n2. BookDao：查看代码\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/test/com/hisen/test/BookDaoTest.java\" target=\"_blank\"\u003eBookDaoTest.java\u003c/a\u003e\n3. 测试：addBook （由于没有预先准备数据，所以就先添加）\n```\n20:12:26.674 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@7b7fdc8] will not be managed by Spring\n20:12:26.709 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.777 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着0(String), 100(Integer), 描述0(String)\n20:12:26.783 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.791 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f3187b0]\n20:12:26.792 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.793 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@a307a8c] was not registered for synchronization because synchronization is not active\n20:12:26.793 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@2b9ed6da] will not be managed by Spring\n20:12:26.793 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.794 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着1(String), 101(Integer), 描述1(String)\n20:12:26.798 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.798 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@a307a8c]\n20:12:26.798 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.799 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4b34fff9] was not registered for synchronization because synchronization is not active\n20:12:26.799 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@127a7a2e] will not be managed by Spring\n20:12:26.799 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.799 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着2(String), 102(Integer), 描述2(String)\n20:12:26.804 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.804 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4b34fff9]\n20:12:26.805 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.805 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@518caac3] was not registered for synchronization because synchronization is not active\n20:12:26.805 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@4f74980d] will not be managed by Spring\n20:12:26.805 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.805 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着3(String), 103(Integer), 描述3(String)\n20:12:26.810 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.811 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@518caac3]\n20:12:26.811 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.811 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1722011b] was not registered for synchronization because synchronization is not active\n20:12:26.811 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@5b3f61ff] will not be managed by Spring\n20:12:26.811 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.812 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着4(String), 104(Integer), 描述4(String)\n20:12:26.816 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.817 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1722011b]\n20:12:26.817 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.817 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6a47b187] was not registered for synchronization because synchronization is not active\n20:12:26.817 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@1ef6d34c] will not be managed by Spring\n20:12:26.817 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.818 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着5(String), 105(Integer), 描述5(String)\n20:12:26.822 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.823 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6a47b187]\n20:12:26.823 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.823 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6fa34d52] was not registered for synchronization because synchronization is not active\n20:12:26.824 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@616ac46a] will not be managed by Spring\n20:12:26.825 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.825 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着6(String), 106(Integer), 描述6(String)\n20:12:26.830 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.830 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6fa34d52]\n20:12:26.830 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.830 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1d483de4] was not registered for synchronization because synchronization is not active\n20:12:26.831 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@28d18df5] will not be managed by Spring\n20:12:26.831 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.832 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着7(String), 107(Integer), 描述7(String)\n20:12:26.836 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.836 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1d483de4]\n20:12:26.836 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.836 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b175c00] was not registered for synchronization because synchronization is not active\n20:12:26.836 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@1ae8bcbc] will not be managed by Spring\n20:12:26.836 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.837 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着8(String), 108(Integer), 描述8(String)\n20:12:26.842 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.842 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b175c00]\n20:12:26.843 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession\n20:12:26.843 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@35399441] was not registered for synchronization because synchronization is not active\n20:12:26.843 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@6304101a] will not be managed by Spring\n20:12:26.843 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e  Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) \n20:12:26.843 [main] DEBUG com.hisen.dao.BookDao.addBook - ==\u003e Parameters: 0(Long), 活着9(String), 109(Integer), 描述9(String)\n20:12:26.848 [main] DEBUG com.hisen.dao.BookDao.addBook - \u003c==    Updates: 1\n20:12:26.848 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@35399441]\n```\n2. 测试:queryById\n```\n20:15:03.947 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@7fc4780b] will not be managed by Spring\n20:15:03.972 [main] DEBUG com.hisen.dao.BookDao.queryById - ==\u003e  Preparing: SELECT book_id, name, number, detail FROM book WHERE book_id = ? \n20:15:04.047 [main] DEBUG com.hisen.dao.BookDao.queryById - ==\u003e Parameters: 101(Long)\n20:15:04.076 [main] DEBUG com.hisen.dao.BookDao.queryById - \u003c==      Total: 1\n20:15:04.088 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f3187b0]\nBook{bookId=101, name='活着0', number=100, detail='描述0'}\n```\n以此类推，就不多写了\n\n第八步：创建service\n---\n```\n├── service\n│   ├── BookService.java\n│   └── impl\n│       └── BookServiceImpl.java\n```\n具体内容：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/tree/master/BookSystem_V0/src/main/java/com/hisen/service\" target=\"_blank\"\u003eservice\u003c/a\u003e\n\n1. 创建测试类：BookServiceImplTest\n2. BookServiceImplTest：查看代码\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/test/com/hisen/test/BookServiceImplTest.java\" target=\"_blank\"\u003eBookServiceImplTest.java\u003c/a\u003e\n3. 测试：getById\n```\n20:19:58.871 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@37fb0bed] will not be managed by Spring\n20:19:58.885 [main] DEBUG com.hisen.dao.BookDao.queryById - ==\u003e  Preparing: SELECT book_id, name, number, detail FROM book WHERE book_id = ? \n20:19:58.974 [main] DEBUG com.hisen.dao.BookDao.queryById - ==\u003e Parameters: 101(Long)\n20:19:59.004 [main] DEBUG com.hisen.dao.BookDao.queryById - \u003c==      Total: 1\n20:19:59.011 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2bec854f]\nBook{bookId=101, name='活着0', number=100, detail='描述0'}\n```\n第九步：创建controller\n---\n```\n└── web\n    └── BookController.java\n```\n具体内容：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/blob/master/BookSystem_V0/src/main/java/com/hisen/web/BookController.java\" target=\"_blank\"\u003eBookController.java\u003c/a\u003e\n\n第十步：创建jsp页面以及配置web.xml\n---\n页面主要使用了bootstrap\n```\n└── webapp\n    ├── index.jsp\n    └── WEB-INF\n        ├── jsp\n        │   ├── detail.jsp\n        │   └── list.jsp\n        └── web.xml\n```\n具体内容：\u003ca href=\"https://github.com/hisen-yuan/SSM_BookSystem/tree/master/BookSystem_V0/src/main/webapp\" target=\"_blank\"\u003e查看具体内容\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhisenyuan%2Fssm_booksystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhisenyuan%2Fssm_booksystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhisenyuan%2Fssm_booksystem/lists"}