1、导包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2、配置
spring:
datasource:
url: jdbc:mysql://192.168.33.80:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Hongkong&zeroDateTimeBehavior=convertToNull
username: root
password: 123456
3、表对应的对象
/**
* Created on 2019/4/6.
*
* @author Grak
* @since 1.0
*/
public class Userinfo {
private int uid;
private String username;
private String pwd;
private String userimg;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getUserimg() {
return userimg;
}
public void setUserimg(String userimg) {
this.userimg = userimg;
}
@Override
public String toString() {
return "Userinfo{" +
"uid=" + uid +
", username='" + username + '\'' +
", pwd='" + pwd + '\'' +
", userimg='" + userimg + '\'' +
'}';
}
}
4、RowMapper
/**
* Created on 2019/4/6.
* 数据库字段和实际java对象转换
* @author Grak
* @since 1.0
*/
public class MyRowMapper implements RowMapper<Userinfo> {
@Override
public Userinfo mapRow(ResultSet rs, int rowNum) throws SQLException {
//使用的是数据库里面的名字
int userId = rs.getInt("uid");
String userName = rs.getString("username");
String pwd = rs.getString("pwd");
String userimg = rs.getString("userimg");
Userinfo user = new Userinfo();
user.setUid(userId);
user.setUsername(userName);
user.setPwd(pwd);
user.setUserimg(userimg);
return user;
}
}
5、数据库调用方法
/**
* Created on 2019/4/6.
*
* @author Grak
* @since 1.0
*/
public interface UserService {
List<Userinfo> findAll();
Userinfo findById(int userId);
int create(String username,String pwd,String userimg);
int update(String username,String pwd,String userimg, int userId);
int delete(int userId);
}
6、sql实现逻辑绑定
/**
* Created on 2019/4/6.
*
* @author Grak
* @since 1.0
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<Userinfo> findAll() {
String sql = "select * from userinfo ";
return this.jdbcTemplate.query(sql,new MyRowMapper());
}
@Override
public Userinfo findById(int userId) {
String sql = "select * from userinfo where uid = ?";
Userinfo user = jdbcTemplate.queryForObject(sql,new MyRowMapper(),userId);
return user;
}
@Override
public int create(String username, String pwd, String userimg) {
String sql = "insert into userinfo(username,pwd,userimg) values(?,?,?)";
return jdbcTemplate.update(sql,username,pwd,userimg);
}
@Override
public int update(String username, String pwd, String userimg, int userId) {
String sql = "update userinfo set username = ? , pwd = ? , userimg = ? where uid = ?";
return jdbcTemplate.update(sql, username,pwd,userimg,userId);
}
@Override
public int delete(int userId) {
String sql = "delete from userinfo where uid = ?";
return jdbcTemplate.update(sql,userId);
}
}
7、事务监听逻辑类
/**
* Created on 2019/4/6.
*
* @author Grak
* @since 1.0
*/
@Component
public class DemoAspect {
@Autowired
private UserService user;
public void runAspect(){
//事务里面不要用try catch 如果使用了一定要手动回滚
user.create("刘良","mm","江西");
List<Userinfo> userinfos = user.findAll();
int uid = 0;
for(Userinfo info : userinfos){
if(info.getUsername().equals("刘良")){
uid = info.getUid();
}
}
System.out.println("用户信息:" + user.findById(uid));
int m = 1/0;//模拟异常,回滚提交
user.update("李白","ww","麻花",uid);
System.out.println("用户修改:" + user.findById(uid));
// user.delete(uid);
}
}
8.maina方法
@SpringBootApplication
public class AopApplication {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(AopApplication.class, args);
DemoAspect user = (DemoAspect) ctx.getBean("demoAspect");
user.runAspect();
}
}