spring-boot之(11) mybatis
前面说了jdbcTemplate和dataSource后,接下来的目标就是集成Mybatis,Spring-boot也提供了Spring-data的集成。
- 项目结构
MyProject
|——src
|——main
|——java
|——com.xxxx
|——config 配置相关
|——domain 持久层
|——mapper dao层
|——service service层
|——web web层
|——resources
|——mapper
|——com.xxx.bean
|——static
|——templates
|——application.yml
- Mybatis的Mapper配置文件
<?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.fzhsh.demo.boot.mapper.UserMapper" > <resultMap id="BaseResultMap" type="com.fzhsh.demo.boot.domain.User" > <id column="id" property="id" jdbcType="VARCHAR" /> <result column="name" property="username" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_list"> id, `username`, `password` </sql> <insert id="insert" parameterType="com.fzhsh.demo.boot.domain.User"> INSERT INTO fd_common_user (<include refid="Base_Column_list" />) VALUES (#{id, jdbcType=VARCHAR}, #{username,jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR}) </insert> <select id="selectById" parameterType="int" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_list"/> FROM fd_common_user WHERE id=#{id,jdbcType=VARCHAR} </select> </mapper>
- java实体对象
public class User implements UserDetails { private String id; private String username; private String password; public User(){} public User(String username, String password){ this.username = username; this.password = password; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { Set<GrantedAuthority> set = new HashSet<GrantedAuthority>(); set.add(new SimpleGrantedAuthority("ROLE_LOGIN")); return set; } @Override public String getPassword() { return password; } @Override public String getUsername() { return username; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } public void setId(String id) { this.id = id; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } public String getId() { return id; } }
- Mapper查询接口
public interface UserMapper { User selectById(String id); void insert(User user); }
- Service代码
@Service public class CommonUserService { @Autowired private UserMapper userMapper; public User getUser(String id){ return userMapper.selectById(id); } public void addUser(String id, String username, String password){ User user = new User(username, password); user.setId(id); addUser(user); } public void addUser(User user){ userMapper.insert(user); } }
- 修改之前登陆认证逻辑
@Service public class SimpleUserDetailService implements UserDetailsService { // @Autowired // private MyJdbcTemplate myJdbcTemplate; @Autowired private CommonUserService userService; @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { // Map map = myJdbcTemplate.getJdbcTemplate().queryForMap("select * from fd_common_user where `id`='1'"); // System.out.println(map.get("USERID")); // return new User("root", "root"); return userService.getUser("1"); } }
- 最重要集成Mybatis配置
@Configuration public class MybatisConfig { @Bean @ConfigurationProperties(prefix="mime.datasource") public DataSource primaryDataSource() { return DataSourceBuilder.create() .url("jdbc:mysql://127.0.0.1:3306/food?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=round&allowMultiQueries=true&autoReconnect=true") .username("root") .password("root") .build(); } @Bean("sqlSessionFactory") public SqlSessionFactoryBean mybatis(@Autowired DataSource dataSource) throws IOException { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver(); sessionFactoryBean.setMapperLocations(patternResolver.getResources("classpath:mapper/com/fzhsh/demo/boot/*.xml")); return sessionFactoryBean; } @Bean public MapperScannerConfigurer scannerConfigurer(@Autowired SqlSessionFactory sqlSessionFactory){ MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); scannerConfigurer.setSqlSessionFactory(sqlSessionFactory); scannerConfigurer.setBasePackage("com.fzhsh.demo.boot.mapper"); return scannerConfigurer; } }
- 至此结束,参考资料
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-sql

浙公网安备 33010602011771号