初学者mysql+mybatis-springboot的demo
来源:互联网 发布:开淘宝规则 编辑:程序博客网 时间:2024/06/06 10:55
springboot是一个新的框架,我因为工作的需要也学习了这个框架,他少了很多配置的文件,
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
下面是我简单的写了一个demo,越努力的人越幸运 共勉,
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>mysql-mybatis-springboot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mysql-mybatis-springboot</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <!-- 依赖版本 --> <mybatis.version>3.3.1</mybatis.version> <mybatis.spring.version>1.2.4</mybatis.spring.version> <mapper.version>3.3.9</mapper.version> <pagehelper.version>4.1.6</pagehelper.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>0.2.15</version> </dependency> <!--Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!--通用Mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!--分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>0.2.15</version> </dependency> <!--Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!--分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!--通用Mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
然后就是配置文件
application.yml
server: port: 8080spring.thymeleaf.cache: falsesecurity.basic.enabled: falsespring.datasource: name: dev url: jdbc:mysql://127.0.0.1:3306/h5?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: admin # 使用druid数据源 filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20logging: level: info
配完这些之后就是代码的实现了
UserMapper.xml
<?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.sara.mapper.UserMapper" > <resultMap id="BaseResultMap" type="com.sara.entity.User" > <!-- WARNING - @mbg.generated --> <id column="id" property="id" jdbcType="BIGINT" /> <result column="username" property="username" jdbcType="VARCHAR" /> <result column="psw" property="psw" jdbcType="VARCHAR" /> <result column="phone" property="phone" jdbcType="VARCHAR" /> <result column="alipay" property="alipay" jdbcType="VARCHAR" /> <result column="type" property="type" jdbcType="VARCHAR" /> <result column="create_date" property="createDate" jdbcType="TIMESTAMP" /> <result column="grade" property="grade" jdbcType="VARCHAR" /> <result column="close" property="close" jdbcType="TINYINT" /> </resultMap></mapper>
Mybatis里面的一些基本配置
MyBatisConfig
/* * The MIT License (MIT) * * Copyright (c) 2014-2016 abel533@gmail.com * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */package com.sara.config;import org.apache.ibatis.plugin.Interceptor;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import org.springframework.transaction.annotation.TransactionManagementConfigurer;import javax.sql.DataSource;import java.util.Properties;/** * MyBatis基础配置 * @author xj.z * @version 1.0 */@Configuration@EnableTransactionManagementpublic class MyBatisConfig implements TransactionManagementConfigurer { @Autowired DataSource dataSource; @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactoryBean() { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setTypeAliasesPackage("com.sara.entity"); //添加XML目录 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); return bean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return new DataSourceTransactionManager(dataSource); }}
MyBatisMapperScannerConfig
/* * The MIT License (MIT) * * Copyright (c) 2014-2016 abel533@gmail.com * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */package com.sara.config;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import tk.mybatis.spring.mapper.MapperScannerConfigurer;import java.util.Properties;/** * MyBatis扫描接口,使用的tk.mybatis.spring.mapper.MapperScannerConfigurer,如果你不使用通用Mapper,可以改为org.xxx... * * @author mijun * */@Configuration// 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解@AutoConfigureAfter(MyBatisConfig.class)public class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); mapperScannerConfigurer.setBasePackage("com.sara.mapper"); Properties properties = new Properties(); properties.setProperty("mappers", "tk.mybatis.mapper.common.Mapper"); properties.setProperty("notEmpty", "false"); properties.setProperty("IDENTITY", "MYSQL"); mapperScannerConfigurer.setProperties(properties); return mapperScannerConfigurer; }}
WebMvcConfig
package com.sara.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configurationpublic class WebMvcConfig extends WebMvcConfigurerAdapter { /** * 配置拦截器 * @author lance * @param registry */ }
WebSecurityConfig
package com.sara.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.security.SecurityProperties;import org.springframework.context.annotation.Configuration;import org.springframework.core.annotation.Order;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.builders.WebSecurity;import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;import org.springframework.security.web.util.matcher.AntPathRequestMatcher;public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private UserDetailsService userDetailsService; private String[] pathPatterns = {"/login/*","/register/*","/rest/*"}; private String[] csrfPatterns = {"/rest/*"}; @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers(pathPatterns).permitAll().anyRequest().fullyAuthenticated() .and().formLogin().loginPage("/login").failureUrl("/login?error").permitAll() .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll() .and().csrf().ignoringAntMatchers(csrfPatterns); } @Autowired public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {// auth.inMemoryAuthentication().withUser("123456").password("123456").roles("USER"); auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder()); } @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/js/**", "/css/**", "/images/**", "/**/favicon.ico"); }}
实体类
entity
User
package com.sara.entity;import java.util.Date;import javax.persistence.*;public class User { private Long id; /** * 登录用户名 */ private String username; /** * 密码 */ private String psw; /** * 用户手机 */ private String phone; /** * 支付宝账号 */ private String alipay; /** * 用户类型 */ private String type; /** * 注册时间 */ private Date createDate; /** * 用户等级 */ private String grade; private Byte close; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAlipay() { return alipay; } public void setAlipay(String alipay) { this.alipay = alipay; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } public Byte getClose() { return close; } public void setClose(Byte close) { this.close = close; }}
UserVo
package com.sara.entity.vo;public class UserVo { /** * 登录用户名 */ private String username; /** * 密码 */ private String psw; /** * 用户手机 */ private String phone; /** * 支付宝账号 */ private String alipay; /** * 获取登录用户名 * * @return username - 登录用户名 */ public String getUsername() { return username; } /** * 设置登录用户名 * * @param username 登录用户名 */ public void setUsername(String username) { this.username = username; } /** * 获取密码 * * @return psw - 密码 */ public String getPsw() { return psw; } /** * 设置密码 * * @param psw 密码 */ public void setPsw(String psw) { this.psw = psw; } /** * 获取用户手机 * * @return phone - 用户手机 */ public String getPhone() { return phone; } /** * 设置用户手机 * * @param phone 用户手机 */ public void setPhone(String phone) { this.phone = phone; } /** * 获取支付宝账号 * * @return alipay - 支付宝账号 */ public String getAlipay() { return alipay; } /** * 设置支付宝账号 * * @param alipay 支付宝账号 */ public void setAlipay(String alipay) { this.alipay = alipay; }}
VO
userVo
package com.sara.entity.vo;public class UserVo { /** * 登录用户名 */ private String username; /** * 密码 */ private String psw; /** * 用户手机 */ private String phone; /** * 支付宝账号 */ private String alipay; /** * 获取登录用户名 * * @return username - 登录用户名 */ public String getUsername() { return username; } /** * 设置登录用户名 * * @param username 登录用户名 */ public void setUsername(String username) { this.username = username; } /** * 获取密码 * * @return psw - 密码 */ public String getPsw() { return psw; } /** * 设置密码 * * @param psw 密码 */ public void setPsw(String psw) { this.psw = psw; } /** * 获取用户手机 * * @return phone - 用户手机 */ public String getPhone() { return phone; } /** * 设置用户手机 * * @param phone 用户手机 */ public void setPhone(String phone) { this.phone = phone; } /** * 获取支付宝账号 * * @return alipay - 支付宝账号 */ public String getAlipay() { return alipay; } /** * 设置支付宝账号 * * @param alipay 支付宝账号 */ public void setAlipay(String alipay) { this.alipay = alipay; }}
UserMapper
package com.sara.mapper;import com.sara.entity.User;import tk.mybatis.mapper.common.Mapper;public interface UserMapper extends Mapper<User>{}
UserService
package com.sara.service;import com.sara.entity.User;import com.sara.entity.vo.UserVo;public interface UserService { public User findOne(String userna);// public void register(User userVo);}
UserServiceImpl
package com.sara.service.impl;import com.sara.entity.User;import com.sara.mapper.UserMapper;import com.sara.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.util.StringUtils;@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User findOne(String username) {// if(StringUtils.isEmpty(username)){// return null;// } User query = new User(); query.setUsername(username); User user = userMapper.selectOne(query); return user; }//// @Override// public void register(User userVo) {//// }}
UserController
package com.sara.controller;import com.sara.mapper.UserMapper;import com.sara.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping(value="/user")public class UserController { @Autowired private UserService userService; @Autowired private UserMapper userMapper; @GetMapping(value = "/index") public Object index(){// return userService.findOne("123456"); return userMapper.selectAll(); }}
阅读全文
0 0
- 初学者mysql+mybatis-springboot的demo
- springboot整合mybatis一个简单的demo
- SpringBoot + Mybatis 整合demo
- SpringBoot+Mybatis框架Demo
- 使用springBoot框架+maven+mybatis 实现的小demo
- Springboot+mybatis+Jsp+ztree2.5简单的小demo
- Springboot整合Mysql+Mybatis
- springboot+mybatis+mysql(2)
- SpringBoot+Mybatis学习Demo问题总结1
- 本地环境:mycat+mybatis+springboot实现demo
- springMVC + Mybatis +Mysql demo
- springboot+mybatis+swagger+redis+mysql搭建的第一个项目
- springboot+mybatis的深化
- [Mybatis] SpringBoot -mybatis 常用mysql数据库交互
- springboot -mysql -mybatis mybatis-puls,druid结合
- SpringBoot学习系列基础Demo Mysql数据库
- Mybatis入门 操作MySQL DEMO
- springboot+mybatis+mysql事务未生效
- (二)spring cloud云服务架构
- Java多线程系列--“JUC线程池”02之 线程池原理(一)
- 默慈恩金数
- 网络操作系统有哪些
- 设计模式·Sunny
- 初学者mysql+mybatis-springboot的demo
- Java通过百度地图API获取地址经纬度
- 3008 sas卡
- Photoshop提高照片对比度的几种实用方法
- Ethercat 几种文件类型
- web前端工程师具备经验和知识点(持续更新中)
- mui 轮播api
- Djkstra最短路径算法的c++代码实现
- Java多线程系列--“JUC线程池”04之 线程池原理(三)