• mybatis开发部分核心代码


    pom.xml
    
    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>com.msbgroupId>
    7. <artifactId>TestMyBatis02artifactId>
    8. <version>1.0-SNAPSHOTversion>
    9. <dependencies>
    10. <dependency>
    11. <groupId>mysqlgroupId>
    12. <artifactId>mysql-connector-javaartifactId>
    13. <version>8.0.28version>
    14. dependency>
    15. <dependency>
    16. <groupId>org.mybatisgroupId>
    17. <artifactId>mybatisartifactId>
    18. <version>3.5.6version>
    19. dependency>
    20. <dependency>
    21. <groupId>log4jgroupId>
    22. <artifactId>log4jartifactId>
    23. <version>1.2.17version>
    24. dependency>
    25. dependencies>
    26. project>
    /resource

    配置文件
    db.properties

    1. url=jdbc:mysql://localhost:3306/msb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
    2. driver=com.mysql.cj.jdbc.Driver
    3. username=root
    4. password=root

    mybatis.xml

    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "https://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <properties resource="db.properties">properties>
    7. <typeAliases>
    8. <package name="com.msb.pojo"/>
    9. typeAliases>
    10. <environments default="mysql">
    11. <environment id="mysql">
    12. <transactionManager type="JDBC">transactionManager>
    13. <dataSource type="POOLED">
    14. <property name="driver" value="${driver}"/>
    15. <property name="url" value="${url}"/>
    16. <property name="username" value="${username}"/>
    17. <property name="password" value="${password}"/>
    18. dataSource>
    19. environment>
    20. environments>
    21. <mappers>
    22. <mapper resource="com/msb/mapper/*.xml">mapper>
    23. mappers>
    24. configuration>

    log4j.properties

    1. #log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),
    2. # 优先级从高到低依次为:OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>ALL
    3. #日志级别越高,则输出的日志信息越少,反之越多
    4. #ALL: 最低等级的,用于打开所有日志记录。
    5. #TRACE: designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。
    6. #trace可以指定特定的文件日志信息(指定比DEBUG更细粒度的信息事件),如下案例所示 输出BookMapper 所包含的日志信息
    7. #DEBUG: 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
    8. #INFO: 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序
    9. # 运行的一些重要信息,但是不能滥用,避免打印过多的日志。
    10. #WARN: 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
    11. #ERROR: 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
    12. #FATAL: 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
    13. #OFF: 最高等级的,用于关闭所有日志记录。
    14. #如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来。例如,如果设置优先级为WARN,
    15. # 那么OFF、FATAL、ERROR、WARN 4个级别的log能正常输出,而INFO、DEBUG、TRACE、 ALL级别的log则会被忽略。
    16. # Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
    17. log4j.rootLogger = error , console
    18. log4j.logger.com.msb.mapper.BookMapper=TRACE
    19. ### console ###
    20. log4j.appender.console = org.apache.log4j.ConsoleAppender
    21. log4j.appender.console.Target = System.out
    22. log4j.appender.console.layout = org.apache.log4j.PatternLayout
    23. log4j.appender.console.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH\:mm\:ss}] %C.%M(%L) | %m%n

    实体类 book.java

    1. package com.msb.pojo;
    2. import java.util.LinkedList;
    3. public class Book {
    4. private int id;
    5. private String name;
    6. private String author;
    7. private double price;
    8. public int getId() {
    9. return id;
    10. }
    11. public void setId(int id) {
    12. this.id = id;
    13. }
    14. public String getName() {
    15. return name;
    16. }
    17. public void setName(String name) {
    18. this.name = name;
    19. }
    20. public String getAuthor() {
    21. return author;
    22. }
    23. public void setAuthor(String author) {
    24. this.author = author;
    25. }
    26. public double getPrice() {
    27. return price;
    28. }
    29. public void setPrice(double price) {
    30. this.price = price;
    31. }
    32. public Book() {
    33. }
    34. public Book(int id, String name, String author, double price) {
    35. this.id = id;
    36. this.name = name;
    37. this.author = author;
    38. this.price = price;
    39. }
    40. }

    mapper 接口类 

    1. package com.msb.mapper;
    2. import com.msb.pojo.Book;
    3. import java.util.List;
    4. public interface BookMapper {
    5. /*public abstract */List selectAllBooks();
    6. public abstract Book selectOneBook(String name,String author);
    7. public abstract Book selectOneBook2(Book book);
    8. public abstract Book selectOneBook3(String name,Book book);
    9. public abstract int insertBook(Book book);
    10. }

    接口实现类

    BookMapper.xml

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.msb.mapper.BookMapper">
    6. <select id="selectAllBooks" resultType="Book">
    7. select * from t_book
    8. select>
    9. <select id="selectOneBook" resultType="Book">
    10. select * from t_book where name =#{param1} and author = #{param2}
    11. select>
    12. <select id="selectOneBook2" resultType="Book">
    13. select * from t_book where name =#{name} and author = #{author}
    14. select>
    15. <select id="selectOneBook3" resultType="Book">
    16. select * from t_book where name =#{param1} and author = #{param2.author}
    17. select>
    18. <insert id="insertBook">
    19. insert into t_book (id,name,author,price) values (#{id},#{name},#{author},#{price})
    20. insert>
    21. mapper>

    测试类:

    1. package com.msb.test;
    2. import com.msb.mapper.BookMapper;
    3. import com.msb.pojo.Book;
    4. import org.apache.ibatis.io.Resources;
    5. import org.apache.ibatis.session.SqlSession;
    6. import org.apache.ibatis.session.SqlSessionFactory;
    7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    8. import java.io.IOException;
    9. import java.io.InputStream;
    10. public class Test3 {
    11. public static void main(String[] args) throws IOException {
    12. //指定核心配置文件的路径:
    13. String resource = "mybatis.xml";
    14. //获取加载配置文件的输入流:
    15. InputStream inputStream = Resources.getResourceAsStream(resource);
    16. //加载配置文件,创建工厂类
    17. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    18. //通过工厂类获取一个会话:
    19. SqlSession sqlSession = sqlSessionFactory.openSession();
    20. //动态代理模式?BookMapper mapper = BookMapper实现类
    21. BookMapper mapper = sqlSession.getMapper(BookMapper.class);
    22. Book b = new Book();
    23. b.setId(3);
    24. b.setName("红高粱");
    25. b.setAuthor("莫言");
    26. b.setPrice(46.7);
    27. int n = mapper.insertBook(b);
    28. if(n > 0){
    29. System.out.println("数据插入成功!");
    30. }
    31. //事务相关的操作:
    32. sqlSession.commit();
    33. //关闭资源:
    34. sqlSession.close();
    35. }
    36. }

    总结:接口通过绑定配置文件的方式,封装了与数据库进行交互的过程。

  • 相关阅读:
    【大数据离线开发】6.1 开发MapReduce程序
    Linux内存泄露案例分析和内存管理分享
    小程序生成分享海报图片并保存相册
    在 Excel 内使用 ODBC 消费 SAP ABAP CDS view
    5.Python-使用XMLHttpRequest对象来发送Ajax请求
    Builder模式
    [论文笔记]SELF-INSTRUCT
    Mysql8.0&Mysql5.7&Mysql5.6&Mysql5.5特性对比
    陀螺仪工作原理
    HTML图像标签
  • 原文地址:https://blog.csdn.net/qq_36297093/article/details/133615548