学习日志01:Spring集成Mybatis(注解开发)

71 阅读1分钟

学习Spring的日志下面是有关Spring集成Mybatis的方法

一、数据库配置

数据库为ssm_db里面有个图书表

image-20221115211351628.png

表是这样的

image-20221115211414930.jpg

表的字段名id自动递增

image-20221115211443466.png 在idea里面配置mysql

image-20221115211605034.png

image-20221115211520311.png

image-20221115211700465.png

二、maven配置以及日志处理

logback.xml处理日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <Target>System.out</Target>
        <Encoding>UTF-8</Encoding>
        <encoder>
            <pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} %5p [%t] [%c{1}]:%L - %m%n
            </pattern>
        </encoder>
    </appender>
    <logger name="org.springframework" level="WARN"/>
    <logger name="org.springframework.remoting" level="WARN"/>
    <logger name="org.springframework.scheduling.quartz" level="WARN"/>
    <logger name="org.springframework.data.jpa" level="DEBUG"/>
    <logger name="com.app" level="DEBUG"/>
​
    <root level="ERROR">
        <appender-ref ref="stdout"/>
        <appender-ref ref="logfile"/>
    </root>
</configuration>
        

maven

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.3.18</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.29</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.9</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.5</version>
</dependency>
  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.8</version>
  </dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.22</version>
</dependency>
  <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.21</version>
  </dependency>
  <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.1.7</version>
  </dependency>
  <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.1.7</version>
  </dependency>
  <dependency>
      <groupId>org.logback-extensions</groupId>
      <artifactId>logback-ext-spring</artifactId>
      <version>0.1.4</version>
  </dependency>

三、Spring配置(注解配置方式)

总体需要的文件配置

image-20221115225214238.png

jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=
jdbc.password=

3.1config包

里面的是spring、jdbc\mybatis的基础配置文件

3.1.1SpringConfig.class

@Configuration
//扫描com.app下面的文件
@ComponentScan("com.app")
//引入jdbc.properties
@PropertySource("classpath:jdbc.properties")
//引入jdbc、mybatis的类
@Import({JdbcConfig.class,MybatisConfig.class})
@EnableTransactionManagement
public class SpringConfig {
}

3.1.2JdbcConfig.class

public class JdbcConfig {

@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;

@Bean
public DataSource dataSource(){
    DruidDataSource source = new DruidDataSource();
    source.setDriverClassName(driver);
    source.setUrl(url);
    source.setUsername(username);
    source.setPassword(password);
    return source;
}
@Bean
日志
public PlatformTransactionManager transactionManager(DataSource dataSource)
{
    DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
    transactionManager.setDataSource(dataSource);
    return transactionManager;
}

}

3.1.3MybatisConfig.class

@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
    SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource);
    factoryBean.setTypeAliasesPackage("(放置数据库实体类)com.app.domain");
    return factoryBean;
}
​
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
    MapperScannerConfigurer configurer = new MapperScannerConfigurer();
    configurer.setBasePackage("(放置mybatis接口的包)com.app.dao");
    return configurer;
}

3.2dao

里面是mybatis的接口

这里面就写个查询但是要记得交给spring管理

//交给spring管理
@Repository
public interface BookMapper {
    List<Book>selectBook();
}

3.3domain

是存放数据库实体类的

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
    private int id;
    private String type;
    private String name;
    private String description;
}

3.4service

具体实现功能的

IBookService接口

public interface IBookService {
    public  void select();
}

BookService实现类

@Service//注意要接受spring控制
public class BookService implements IBookService {
    注意要用Autowired注解使用mybatis实现的接口
    @Autowired
    private BookMapper bookMapper;
​
    @Override
    public void select() {
         List<Book> books = bookMapper.selectBook();
        System.out.println(books);
    }
}

Mybatis的mapper.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">
<mapper namespace="com.app.dao.BookMapper">
<select id="selectBook" resultType="com.app.domain.Book">
    select  * from tbl_book
</select>
</mapper>

Test

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class Test {
    //注意去实现service中的接口并使用Autowired注解
    @Autowired
    private IBookService bookService;
​
    @org.junit.Test
    public void select() {
        bookService.select();
    }
}
# ```