项目结构:
application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=1993920ai
server.port=8081
#spring.http.encoding.force=true
#spring.http.encoding.charset=UTF-8
#spring.http.encoding.enabled=true
#server.tomcat.uri-encoding=UTF-8
实体类:
public class User implements Serializable{
private int id;
private String name;
private String password;
}
配置类:
@ComponentScan("yiche.com")
@Configuration
@PropertySource("classpath:application.properties")
public class MyConfig {
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
/*
如果没有上面的 也可以使用这个注解
//覆盖默认数据源 使用druid数据源
@ConfigurationProperties(prefix = "spring.datasource")
*/
@Bean
@Primary
public DataSource dataSource(){
DruidDataSource dataSource=new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(){
SqlSessionFactoryBean sqlFactory = new SqlSessionFactoryBean();
try{
sqlFactory.setDataSource(dataSource());
//设置mybatis的主配置文件 记住是主配置文件啊
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource mybatisXml = resolver.getResource("classpath:mybatis-config.xml");
sqlFactory.setConfigLocation(mybatisXml);
//设置mapper.xml文件的路径
Resource[] resource2=resolver.getResources("classpath:yiche/com/mapper/*.xml");
sqlFactory.setMapperLocations(resource2);
//扫描实体类所在包
sqlFactory.setTypeAliasesPackage("yiche.com.bean");
}catch (Exception e){
//e.printStackTrace();
}
return sqlFactory;
}
/*
@Bean
public EmbeddedServletContainerFactory embeddedServletContainerFactory() {
ConfigurableEmbeddedServletContainer factory = new TomcatEmbeddedServletContainerFactory();
factory.setDocumentRoot(new File("D:\\WorkSpace\\SpringBoot_1\\src\\main\\webapp\\"));
return (EmbeddedServletContainerFactory) factory;
}*/
//mapper接口扫描器 也可以使用注解@MapperScan(basePackages = "yiche.com.mapper") 替代如下
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer();
//mapper接口所在的包
mapperScannerConfigurer.setBasePackage("yiche.com.mapper");
return mapperScannerConfigurer;
}
//可以不配置mapper扫描器但是在启动类上需要加@MapperScan注解 如下
//@ComponentScan("yiche.com")
//@MapperScan("yiche.com.mapper")
}
// /*事务管理*/ //也可以不配置使用默认的
@Bean
public DataSourceTransactionManager getDataSourceTransactionManager1() {
return new DataSourceTransactionManager(dataSource());
}
接口:定义增删改查的方法
@Repository
public interface UserMapper1 {
List<User> getAll();
User getByName(String name);
int delete(User user);
int update(User user);
int addUser(User user);
}
接口.xml文件
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="yiche.com.mapper.UserMapper1">
<!-- 使用别名的目的是让查询结果属性名称和实体bean的属性名对应,要不让绑定不上数据。要么就写resultMap这个大家自己搞了 -->
<select id="getByName" resultType="yiche.com.bean.User">
select * from user where name=#{name}
</select>
<select id="getAll" resultType="yiche.com.bean.User">
select * from user
</select>
<insert id="addUser">
insert into
user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="user.name != null and user.name!=''">
name,
</if>
<if test="user.password != null and user.password!=''">
password,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="user.name != null and user.name!=''">
#{name}, jdbcType=VARCHAR},
</if>
<if test="user.password != null and user.password !=''">
#{password,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="update">
update user
<set>
<if test="name!=null and name!=''">
name=#{name},
</if>
</set>
where id=#{id}
</update>
<delete id="delete" parameterType="Integer">
delete from user where id=#{id}
</delete>
</mapper>
Controller:
@Controller
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping("/add")
public String add(){
User user=new User(12,"tom","123");
userDao.addUser(user);
return "success";
}
@RequestMapping("/delete")
public String delete(){
User user=new User(1,"tom","123");
userDao.delete(user);
return "success";
}
@RequestMapping("/getByName")
@ResponseBody
public String getByName(){
System.out.println("ok");
User user=userDao.getByName("tom");
System.out.println(user);
return "success";
}
@RequestMapping("/update")
public String update(){
User user=new User(2,"cc","123");
userDao.update(user);
return "success";
}
@RequestMapping("/getAll")
@ResponseBody
public String getAll(org.apache.coyote.Request request){
List<User> users=userDao.getAll();
request.setAttribute("user",users);
System.out.println(users.size());
return "list";
}
}
Mybatis全局文件:
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>
<!--
<mappers>
<mapper resource="classpath:yiche/com/mapper/UserMapper.xml"></mapper>
</mappers>-->
</configuration>
pom.xml文件:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- web容器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.6.RELEASE</version>
</dependency>
<!-- 需要单独引用不然会报 java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport -->
<!-- spring jdbc支持, 不引用会报类似,具体类可能不同NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSour -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!--日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
<!--
<!– 通用Mapper –>
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>2.3.4</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.github.iweinzierl</groupId>
<artifactId>jsonformat</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20131018</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.1.1.RELEASE</version>
<scope>test</scope>
</dependency>
<!--SpringBoot测试类-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>