買cms做網(wǎng)站seo推廣軟件品牌
介紹:
SSM相信大家都不陌生,在spring boot出現(xiàn)之前,SSM一直是Java在web開發(fā)中的老大哥?,F(xiàn)在雖說有了spring boot能自動整合第三方框架了,但是現(xiàn)在市面上任然有很多老項目是基于SSM技術的。因此,能熟練掌握SSM進行開發(fā)也是非常重要的。對于新的項目,我當然是推薦直接用spring boot,但是對于像SSM技術的項目,我們必須也能夠熟練上手。(雖說現(xiàn)在電動車很方便,但我們也要會騎自行車)
SSM(Spring+SpringMVC+MyBatis)是一種經(jīng)典的Java Web開發(fā)框架組合?,F(xiàn)在的spring boot框架可以看作是SSM的進一步整合。
整合SSM:
本次使用到的版本為Java8、spring5.3.7
創(chuàng)建一個maven項目,并將項目添加為WEB項目。(可以在創(chuàng)建項目時直接選定模板,也可以先創(chuàng)建一個普通的maven項目,再將maven項目設置為web項目)
項目的目錄結(jié)果如下:
引入一些基礎的maven依賴:
<dependencies><!-- tomcat相關依賴 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>9.0.73</version></dependency><!-- 如果需要JSP支持,還需要添加以下依賴 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><version>9.0.73</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.7</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.7</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.48</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.1.0</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.20</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency></dependencies>
先創(chuàng)建一個spring配置類,用來掃描整合項目路徑:
@Configuration
@ComponentScan("com.zq.ssmdemo")public class SpringConfig {}
接下來就是重點了,我們要在項目中創(chuàng)建一個tomcat容器
(當然,你也可以使用本地的tomcat部署,效果都是一樣的。spring boot的內(nèi)部也是內(nèi)嵌了一個tomcat)。我們在maven坐標中已經(jīng)引入了tomcat的依賴了(注意版本的差異。tomcat版本過高的話就要升級jdk的版本。我目前時jdk8,使用tomcat9)
public class TomcatConfig {public static void main(String[] args) {AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();applicationContext.register(SpringConfig.class);applicationContext.refresh();startTomcat(applicationContext);}static void startTomcat(WebApplicationContext applicationContext){// 創(chuàng)建一個Tomcat實例Tomcat tomcat = new Tomcat();Server server = tomcat.getServer();Service service = server.findService("Tomcat");Connector connector = new Connector();connector.setPort(8080);Engine engine = new StandardEngine();engine.setDefaultHost("localhost");Host host = new StandardHost();host.setName("localhost");String contextPath = "";Context context = new StandardContext();context.setPath(contextPath);context.addLifecycleListener(new Tomcat.FixContextListener());host.addChild(context);engine.addChild(host);service.setContainer(engine);service.addConnector(connector);tomcat.addServlet(contextPath, "dispatcher", newDispatcherServlet(applicationContext));
// 設置默認的Servletcontext.addServletMappingDecoded("/*", "dispatcher");try {tomcat.start();} catch (LifecycleException e) {e.printStackTrace();}}}
現(xiàn)在,這個項目就是一個springMVC項目了。我們可以創(chuàng)建一個controller,寫一個映射路徑來檢驗一下我們的代碼是否正確。
@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/hello")public String get() {System.out.println("hello,test!");return "hello,test!";}}
啟動項目,(運行TomcatConfig中的main方法)
訪問我們定義的映射路徑:
可以看到能正確的訪問到控制類。
整合mybatis:
在resources資源目錄下新建整合mybatis的資源:
新建一個數(shù)據(jù)庫連接文件:
jdbc.driver= com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bank
jdbc.username=root
jdbc.password=123456
新建一個mybatis的配置文件:
<?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><!-- 設置駝峰標識 --><setting name="mapUnderscoreToCamelCase" value="true"/><!-- 打印SQL語句 --><setting name="logImpl" value="STDOUT_LOGGING"/></settings><plugins><!-- 分頁插件 --><plugin interceptor="com.github.pagehelper.PageInterceptor"/></plugins><mappers><package name="com.zq.ssmdemo.mapper"/></mappers></configuration>
注意這兩個文件的位置:
配置mybatis的連接信息:
@PropertySource("classpath:jdbc.properties")
public class MybatisConfig {@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;@Beanpublic DataSource dataSource(){DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(){SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource());//指定mybatis配置文件ClassPathResource classPathResource = new ClassPathResource("mybatis-config.xml");sqlSessionFactoryBean.setConfigLocation(classPathResource);return sqlSessionFactoryBean;}@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setBasePackage("com.zq.ssmdemo.mapper");return mapperScannerConfigurer;}}
在spring的配置類中引入mybatis的配置類:
@Configuration
@ComponentScan("com.zq.ssmdemo")
@Import({MybatisConfig.class})
public class SpringConfig {}
現(xiàn)在,啟動一下這個項目:
可以看到打印除了pageHelp插件的logo,而我們pageHelp插件是在mybatis的配置文件中配置的,所以,我們的mybatis配置文件是肯定被spring項目掃描到的。
現(xiàn)在,我們進行一下簡單的測試,看能否使用mybatis進行數(shù)據(jù)庫的操作:
創(chuàng)建一個mapper接口,進行測試:
public interface UsersMapper {// 查詢所有用戶
@Select("select * from users")List<Users> selectAll();
}
創(chuàng)建一個controller進行測試:
@RestController
@RequestMapping("/user")
public class UserController {@Resourceprivate UsersMapper usersMapper;@GetMapping("/list")public Object add(){PageHelper.startPage(1, 2);List<Users> users = usersMapper.selectAll();PageInfo<Users> page = new PageInfo<>(users);System.out.println(page);return page;}}
輸出結(jié)果如下:
可以看到正確輸出了數(shù)據(jù)庫中的信息,表明我們能成功連接到數(shù)據(jù)庫。