文章目錄
添加依賴
<!--添加mysql 和 mybatis 依賴-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
配置MyBatis
@Configuration
@MapperScan("com.example.springbootstartlearn.Dao")
public class MyBatisConfig {
@Autowired
private DataSource dataSource;
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
// 掃描moudel
factoryBean.setTypeAliasesPackage("com.example.springbootstartlearn.Moudel");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
factoryBean.setMapperLocations(resolver.getResources("classpath*:**/sqlmap/*.xml"));
return factoryBean.getObject();
}
}
配置數據源
這此不再使用properties配置文件了,而是使用yml配置文件,配置如下
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.8:3306/studenms?useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&autoReconnect=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: sa
編寫dao
model定義這裏就不再寫了,就是一個java類,按照數據庫的字段進行定義,然實現getter/setter方法和構造方法即可
@Repository("userDao")
public interface UserDao {
public List<UserMoudel> findAll();
public UserMoudel findById(int id);
public boolean update(UserMoudel moudel);
}
配置sqlmapper.xml
<mapper namespace="com.example.springbootstartlearn.Dao.UserDao">
<!-- sql映射 -->
<select id="findAll" resultType="com.example.springbootstartlearn.Moudel.UserMoudel" >
select * from t_user
</select>
<select id="findById" resultType="com.example.springbootstartlearn.Moudel.UserMoudel">
select * from t_user where id=#{id}
</select>
<update id="update" parameterType="com.example.springbootstartlearn.Dao.UserDao">
update t_user
<trim prefix="set" suffixOverrides=",">
<if test="user != null">user=#{user},</if>
<if test="role != null">role=#{role},</if>
<if test="name != null">name=#{name},</if>
<if test="email != null">email=#{email},</if>
<if test="password != null">password=#{password}</if>
</trim>
where id=#{id}
</update>
</mapper>
編寫service以及serviceImpl
service
public interface IUserSvc {
public List<UserMoudel> findAll();
public UserMoudel findById(int id);
public boolean update(UserMoudel moudel);
}
serviceImpl
@Service("userSvc")
public class UserSvcImpl implements IUserSvc {
@Autowired
private UserDao dao;
@Override
public List<UserMoudel> findAll() {
return dao.findAll();
}
@Override
public UserMoudel findById(int id) {
return dao.findById(id);
}
@Override
public boolean update(UserMoudel moudel) {
return dao.update(moudel);
}
}
編寫Controller並集成swagger
@Api("用戶信息服務接口")
@RestController
@RequestMapping(value = "user")
public class UserController {
@Autowired
private UserSvcImpl userSvc;
@ApiOperation("獲取全部用戶信息")
@GetMapping(value = "/findAll")
@ResponseBody
public List<UserMoudel> findAll() {
return userSvc.findAll();
}
@ApiOperation(value = "根據用戶Id查詢用戶信息")
@GetMapping(value = "/findById")
@ResponseBody
public UserMoudel findById(@RequestParam(value = "用戶Id",required = true) int id){
return userSvc.findById(id);
}
@ApiOperation("更新用戶信息")
@PutMapping("/update")
@ResponseBody
public boolean update(@RequestBody UserMoudel moudel){
return userSvc.update(moudel);
}
}
swagger接口列表如下
每個接口的測試結果如下:
findAll接口
findById接口:
update接口
數據庫更新前:
執行接口後
遇到的問題
- 初始化數據源失敗,異常信息如下:
一般是數據源連接信息錯誤,或是驅動版本與數據庫版本不一致所致