1.创建SpringBoot项目
我们以eclipse为例,首先我们要安装Maven
1)安装maven,网上有很多教程大家可以参考这位老哥的教程(https://www.cnblogs.com/kyleinjava/p/9549481.html)
安装好之后我们要在eclipse进行一些配置让eclipse使用我们自己刚刚安装的maven,如下所示
2)我们在eclipse中安装springboot插件
输入spring安装他
安装好之后我们就可以开始创建SpringBoot项目啦
先择Spring Starter Project,
在这里我们要选择使用的技术,现在我们选择
创建成功啦,现在我们要在pom.xml引入一下c3p0的依赖
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
创建这些包和类
我们先来写实体类
在entity里面创建User类并且对里面的属性进行封装
package com.example.demo.entity;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
写一个连接数据库的类 SSMConfig
package com.example.demo.config;
import java.beans.PropertyVetoException;
import java.io.IOException;
import javax.sql.DataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import com.mchange.v2.c3p0.ComboPooledDataSource;
@Configuration
//Mapper的扫描路径
@MapperScan("com.example.demo.dao")
public class SSMConfig {
@Autowired//说明需要bean
private DataSource dataSource;
@Bean(name="dataSource")
public ComboPooledDataSource createDataSource() throws PropertyVetoException{
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/goods?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
dataSource.setUser("root");
dataSource.setPassword("root");
//在关闭连接之后不会自动的Commit
dataSource.setAutoCommitOnClose(false);
return dataSource;
}
@Bean(name="sqlSessionFactory")
public SqlSessionFactoryBean creatSqlSessionFactoryBean() throws IOException {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
//加载主配置文件mybatis-config.xml
bean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//Mapper扫描路径
//String packageSearchPath=;
bean.setMapperLocations(resolver.getResources("classpath*:/mapper/**.xml"));
//配置实体的包
bean.setTypeAliasesPackage("com.example.demo.entity");
//dataSource
bean.setDataSource(dataSource);
//bean.setDataSource(dataSource);
return bean;
}
}
Controller测试类 的填写
package com.example.demo.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.example.demo.dao.UserDao;
import com.example.demo.entity.User;
@Controller
public class TestController {
@Autowired
private UserDao userDao;
@RequestMapping("/test")
public String test() {
/**
* 测试查询所有用户
*/
// List<User> searchAllUsers = userDao.searchAllUsers();
//
// for(User user:searchAllUsers) {
// System.out.println(user.getId()+","+user.getUsername()+","+user.getPassword());
// }
/**
* 测试查询单个用户
*/
// User user= userDao.searchUserById(22);
//
// System.out.println(user.getId()+","+user.getUsername()+","+user.getPassword());
//
/**
* 测试添加单个用户
*/
// int a =userDao.addUser1(99, "111", "333");
//
// User user = new User();
// user.setId(3);
// user.setUsername("张三");
// user.setPassword("321");
//
// userDao.addUser2(user);
//
//System.out.println(a+"..........................");
// User user =userDao.searchUserById(1);
//
// user.setUsername("改了");
// user.setPassword("mimagaile");
//
// userDao.updateUser(user);
//
userDao.deleteUser2(99);
return "hello";
}
}
DAo
package com.example.demo.dao;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.example.demo.entity.User;
public interface UserDao {
/**
* 1.增
*/
public int addUser2(User user);
public int addUser1(int id,String username,String password);
/**
* 2.删
*/
public int deleteUser2(@Param("yang") int id);
public int deleteUser(int id);
/**
* 3.改
*/
public int updateUser(User user);
/**
* 4.查
*(1).查询所有User
*(2).查询单个User
*/
public List<User> searchAllUsers();
public User searchUserById(int id);
}
数据库的设计
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">
<!-- namespace:Mapper对应的Dao全路径 -->
<mapper namespace="com.example.demo.dao.UserDao">
<!-- id: Dao中对应方法名称,resultType:返回类型 -->
<select id="searchAllUsers" resultType="com.example.demo.entity.User" >
select * from user
</select>
<select id="searchUserById" resultType="com.example.demo.entity.User">
select * from user where id=#{id}
</select>
<!-- useGeneratedKeys:如果执行成功返回主键的值parameterType:传入参数的类型 -->
<insert id="addUser1" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into user(id,username,password) values(#{id},#{username},#{password})
</insert>
<insert id="addUser2" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="com.example.demo.entity.User">
insert into user values(#{id},#{username},#{password})
</insert>
<update id="updateUser" parameterType="com.example.demo.entity.User">
update user set username=#{username},password=#{password} where id=#{id}
</update>
<delete id="deleteUser">
delete from user where id=#{id}
</delete>
<delete id="deleteUser2">
delete from user where id=#{yang}
</delete>
</mapper>
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>
<!-- 获取主键自增的这个值 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 开启驼峰命名的转化 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
项目写到这里就结束了
这是一个小demo,下载连接在这里
链接:https://pan.baidu.com/s/1r1h33D-1zOe0OXPCEfMDOA
提取码:djmr