SSM_BookSystem ---> Hello CRUDjava
說明:本項目目前包含基礎的CRUDmysql
日期:2017-05-01 22:25:37git
做者:hisenyuangithub
網站:hisen.meweb
源碼:https://github.com/hisenyuan/SSM_BookSystem (最新更新會在此處)spring
預覽:sql
通常idea建立工程的過程數據庫
打開idea ---> File ---> new ---> project ---> maven --->apache
create from archetype ---> maven-archetype-webapp ---> 接下來通常默認便可bootstrap
最後在main目錄下新建java文件夾,而且mark as source root。
首先建立以下的目錄結構便可:
├── java │ └── com │ └── hisen │ ├── dao │ │ └── BookDao.java │ ├── entity │ │ └── Book.java │ ├── service │ │ ├── BookService.java │ │ └── impl │ │ └── BookServiceImpl.java │ └── web │ └── BookController.java ├── resources │ ├── jdbc.properties │ ├── logback.xml │ ├── mapper │ │ └── BookMapper.xml │ ├── mybatis-config.xml │ └── spring │ ├── spring-dao.xml │ ├── spring-service.xml │ └── spring-web.xml └── webapp ├── index.jsp └── WEB-INF ├── jsp │ ├── detail.jsp │ └── list.jsp └── web.xml
都配有詳細的說明,這裏再也不重複
詳情請看pom.xml
├── resources │ ├── jdbc.properties
建立數據庫配置文件,內容以下
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/booksystem?useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=hisen
這裏須要建立一個數據庫,名爲:booksystem
建表語句以下:
CREATE TABLE `book` ( `book_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '圖書ID', `name` varchar(100) NOT NULL COMMENT '圖書名稱', `number` int(11) NOT NULL COMMENT '圖書數量', `detail` varchar(200) NOT NULL COMMENT '圖書描述', PRIMARY KEY (`book_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='圖書表'
表結構以下:
+---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | book_id | bigint(20) | NO | PRI | NULL | auto_increment | | name | varchar(100) | NO | | NULL | | | number | int(11) | NO | | NULL | | | detail | varchar(200) | NO | | NULL | | +---------+--------------+------+-----+---------+----------------+
├── resources │ ├── mybatis-config.xml
在resources目錄下新建文件:mybatis-config.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> <!-- 配置全局屬性 --> <settings> <!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 --> <setting name="useGeneratedKeys" value="true" /> <!-- 使用列別名替換列名 默認:true --> <setting name="useColumnLabel" value="true" /> <!-- 開啓駝峯命名轉換:Table{create_time} -> Entity{createTime} --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> </configuration>
在resources/spring目錄下新建三個文件:
│ └── spring │ ├── spring-dao.xml │ ├── spring-service.xml │ └── spring-web.xml
詳細內容詳見:resources/spring/
logback配置比log4j要簡單點,功能相似
├── resources │ ├── logback.xml
在resources文件夾下新建文件:logback.xml
<?xml version="1.0" encoding="UTF-8" ?> <configuration debug="true"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--開啓debug日誌模式,在控制檯打印日誌--> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration>
以下兩個文件:BookDao.java、Book.java
│ └── com │ └── hisen │ ├── dao │ │ └── BookDao.java │ ├── entity │ │ └── Book.java
詳細內容:BookDao.java
詳細內容:Book.java
建立測試類:
20: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 20:12:26.709 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.777 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着0(String), 100(Integer), 描述0(String) 20:12:26.783 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.791 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f3187b0] 20:12:26.792 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.793 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.794 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着1(String), 101(Integer), 描述1(String) 20:12:26.798 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.798 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@a307a8c] 20:12:26.798 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.799 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.799 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着2(String), 102(Integer), 描述2(String) 20:12:26.804 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.804 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4b34fff9] 20:12:26.805 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.805 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.805 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着3(String), 103(Integer), 描述3(String) 20:12:26.810 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.811 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@518caac3] 20:12:26.811 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.811 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.812 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着4(String), 104(Integer), 描述4(String) 20:12:26.816 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.817 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1722011b] 20:12:26.817 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.817 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.818 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着5(String), 105(Integer), 描述5(String) 20:12:26.822 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.823 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6a47b187] 20:12:26.823 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.825 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.825 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着6(String), 106(Integer), 描述6(String) 20:12:26.830 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.830 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6fa34d52] 20:12:26.830 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.831 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.832 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着7(String), 107(Integer), 描述7(String) 20:12:26.836 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.836 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1d483de4] 20:12:26.836 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.836 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.837 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着8(String), 108(Integer), 描述8(String) 20:12:26.842 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.842 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b175c00] 20:12:26.843 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 20: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 20: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 20:12:26.843 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Preparing: INSERT INTO book(`book_id`, `name`, `number`,`detail`) VALUES(?, ?, ?, ?) 20:12:26.843 [main] DEBUG com.hisen.dao.BookDao.addBook - ==> Parameters: 0(Long), 活着9(String), 109(Integer), 描述9(String) 20:12:26.848 [main] DEBUG com.hisen.dao.BookDao.addBook - <== Updates: 1 20:12:26.848 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@35399441]
20: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 20:15:03.972 [main] DEBUG com.hisen.dao.BookDao.queryById - ==> Preparing: SELECT book_id, name, number, detail FROM book WHERE book_id = ? 20:15:04.047 [main] DEBUG com.hisen.dao.BookDao.queryById - ==> Parameters: 101(Long) 20:15:04.076 [main] DEBUG com.hisen.dao.BookDao.queryById - <== Total: 1 20:15:04.088 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f3187b0] Book{bookId=101, name='活着0', number=100, detail='描述0'}
以此類推,就很少寫了
在resources/mapper/目錄下建立:resources/mapper/BookMapper.xml
在mapper文件中須要用到第六步的內容
├── service │ ├── BookService.java │ └── impl │ └── BookServiceImpl.java
具體內容:service
20: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 20:19:58.885 [main] DEBUG com.hisen.dao.BookDao.queryById - ==> Preparing: SELECT book_id, name, number, detail FROM book WHERE book_id = ? 20:19:58.974 [main] DEBUG com.hisen.dao.BookDao.queryById - ==> Parameters: 101(Long) 20:19:59.004 [main] DEBUG com.hisen.dao.BookDao.queryById - <== Total: 1 20:19:59.011 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2bec854f] Book{bookId=101, name='活着0', number=100, detail='描述0'}
└── web └── BookController.java
具體內容:BookController.java
頁面主要使用了bootstrap
└── webapp ├── index.jsp └── WEB-INF ├── jsp │ ├── detail.jsp │ └── list.jsp └── web.xml
具體內容:查看具體內容