色婷五一,精品亚洲欧美一区二区三区日产 ,精选国产AV剧情,无码丰满少妇2在线观看

18600329666

咨詢技術(shù)專家

掃一掃
與技術(shù)專家在線溝通

Menu
springboot整合使用mybatis操作數(shù)據(jù)庫
       spring-boot的應(yīng)用非常廣泛,那么spring-boot如何繼承mybatis操作數(shù)據(jù)庫呢?主要是利用mybatis官方提供繼承jar包mybatis-spring-boot-starter,mybatis-spring-boot-starter主要有兩種解決方案,一種是使用注解解決一切問題,一種是簡化后的老傳統(tǒng)。當(dāng)然任何模式都需要首先引入mybatis-spring-boot-starter的pom文件
       一、maven項(xiàng)目引入jar包

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.1.1</version>
    </dependency>
     <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
二、配置springboot
mybatis.type-aliases-package=com.neo.entity
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root

springboot會(huì)自動(dòng)加載spring.datasource.*相關(guān)配置,數(shù)據(jù)源就會(huì)自動(dòng)注入到sqlSessionFactory中,sqlSessionFactory會(huì)自動(dòng)注入到Mapper中,對了你一切都不用管了,直接拿起來使用就行了。在啟動(dòng)類中添加對mapper包掃描@MapperScan
@SpringBootApplication
@MapperScan("com.neo.mapper")
public class Application {
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
或者直接在Mapper類上面添加注解@Mapper,建議使用上面那種,不然每個(gè)mapper加個(gè)注解也挺麻煩的
三、開發(fā)Mapper即dao層

public interface UserMapper {
 
    @Select("SELECT * FROM users")
    @Results({
        @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
        @Result(property = "nickName", column = "nick_name")
    })
    List<UserEntity> getAll();
 
    @Select("SELECT * FROM users WHERE id = #{id}")
    @Results({
        @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
        @Result(property = "nickName", column = "nick_name")
    })
    UserEntity getOne(Long id);
 
    @Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})")
    void insert(UserEntity user);
 
    @Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}")
    void update(UserEntity user);
 
    @Delete("DELETE FROM users WHERE id =#{id}")
    void delete(Long id);
 
}
為了更接近生產(chǎn)我特地將user_sex、nick_name兩個(gè)屬性在數(shù)據(jù)庫加了下劃線和實(shí)體類屬性名不一致,另外user_sex使用了枚舉
  ● @Select 是查詢類的注解,所有的查詢均使用這個(gè)
  ● @Result 修飾返回的結(jié)果集,關(guān)聯(lián)實(shí)體類屬性和數(shù)據(jù)庫字段一一對應(yīng),如果實(shí)體類屬性和數(shù)據(jù)庫屬性名保持一致,就不需要這個(gè)屬性來修飾。
  ● @Insert 插入數(shù)據(jù)庫使用,直接傳入實(shí)體類會(huì)自動(dòng)解析屬性到對應(yīng)的值
  ● @Update 負(fù)責(zé)修改,也可以直接傳入對象
  ● @delete 負(fù)責(zé)刪除
了解更多屬性參考這里
注意,使用#符號和$符號的不同:
// This example creates a prepared statement, something like select * from teacher where name = ?;
@Select("Select * from teacher where name = #{name}")
Teacher selectTeachForGivenName(@Param("name") String name);
 
// This example creates n inlined statement, something like select * from teacher where name = 'someName';
@Select("Select * from teacher where name = '${name}'")
Teacher selectTeachForGivenName(@Param("name") String name);
四、使用mybatis查詢數(shù)據(jù)庫

上面三步就基本完成了相關(guān)dao層開發(fā),使用的時(shí)候當(dāng)作普通的類注入進(jìn)入就可以了
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
 
    @Autowired
    private UserMapper UserMapper;
 
    @Test
    public void testInsert() throws Exception {
        UserMapper.insert(new UserEntity("aa", "a123456", UserSexEnum.MAN));
        UserMapper.insert(new UserEntity("bb", "b123456", UserSexEnum.WOMAN));
        UserMapper.insert(new UserEntity("cc", "b123456", UserSexEnum.WOMAN));
 
        Assert.assertEquals(3, UserMapper.getAll().size());
    }
 
    @Test
    public void testQuery() throws Exception {
        List<UserEntity> users = UserMapper.getAll();
        System.out.println(users.toString());
    }
 
    @Test
    public void testUpdate() throws Exception {
        UserEntity user = UserMapper.getOne(3l);
        System.out.println(user.toString());
        user.setNickName("neo");
        UserMapper.update(user);
        Assert.assertTrue(("neo".equals(UserMapper.getOne(3l).getNickName())));
    }
}
      MyBatis相當(dāng)靈活,不會(huì)對應(yīng)用程序或者數(shù)據(jù)庫的現(xiàn)有設(shè)計(jì)強(qiáng)加任何影響,SQL寫在XML里,從程序代碼中徹底分離,降低耦合度,便于統(tǒng)一管理和優(yōu)化,并可重用,結(jié)合springboot將會(huì)使得java  web開發(fā)更加靈活方便,大大提高開發(fā)效率