【mybatis】 从0开始搭建mybatis、注解开发
2020-07-25 22:05
113 查看
- 本篇文章的目的主要是为了熟悉xml配置与注解配置的对应关系。
- 从0开始
搭建环境
pow.xml 导入maven坐标、依赖
- 搭建mybatis的必需品 :mybatis3、mysql-connector-java
- log4j、junit、lombok
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </dependency> </dependencies>
编写实体类
-实现序列化接口
package com.wei.pojo; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; }
编写mapper接口
package com.wei.mapper; public interface UserMapper { List<User> findAll(); User findUserById(Integer id); }
映射配置文件(注解开发可不写)
- 如果使用注解开发,那么resource对应路径上(com.xxx.mapper.UserMapper.xml)的xml不能存在。不然会报错。
主配置文件mybatis-config.xml(不可省略)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载数据库信息 --> <properties resource="jdbcConfig.properties"></properties> <typeAliases> <package name="com.wei.pojo"/> </typeAliases> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 指定带有注解的mapper接口所在位置 --> <mappers> <package name="com.wei.mapper" /> </mappers> </configuration>
需要引入数据库信息 jdbcConfig.properties和LOG4J日志文件log4j.properties
- jdbcConfig.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=root
- log4j.properties
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码 log4j.rootLogger=DEBUG,console,file #控制台输出的相关设置 log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.Threshold=DEBUG log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%c]-%m%n log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n #文件输出的相关设置 log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File=./log/kuang.log log4j.appender.file.MaxFileSize=10mb log4j.appender.file.Threshold=DEBUG log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n #日志输出级别 log4j.logger.org.mybatis=DEBUG log4j.logger.java.sql=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
编写sql到mapper接口对应的方法上
- CRUD的四种注解
@Select、@Insert、@Delete、@Update - 编写完成,测试程序是否可用运行。
CRUD操作
- 简单的CRUD 无非就是将原本的xml改为把注解写在接口的方法上。
注解查询、多表查询 Results、Result
- 数据库字段与实体类属性不一致
- 使用Results 、Result 完成多表封装.
public interface UserMapper { @Select("select * from user") @Results(id="userMap" ,value = { @Result(id=true,column = "id" , property = "userId"), @Result(id=false,column = "birthday" , property = "userBirthday"), @Result(id=false,column = "username" , property = "userName"), @Result(id=false,column = "sex" , property = "userSex"), @Result(id=false,column = "address" , property = "userAddress"), }) List<User> findAll2(); //resultMap 结果映射的复用,即指定id。 @ResultMap("userMap") @Select("select * from user where id = #{id}") User findUserById(Integer id); }
-以下,一对一、一对多的注解知识点对应XML内容
https://blog.csdn.net/qq_30081043/article/details/107581869
注解一对一 one = @one
- 一般情况,一对一使用急切的加载,而一对多使用懒加载。
public interface AccountMapper { @Select("select * from account") @Results(id="accountMap" , value = { @Result(id=true,column = "id" , property = "id"), @Result(id=false,column = "uid" , property = "uid"), @Result(id=false,column = "money" , property = "money"), @Result(id=false,column = "uid" , property = "user", one = @One(select = "com.wei.mapper.UserMapper.findUserById" , fetchType = FetchType.EAGER) ) }) List<Account> findAll(); @ResultMap("accountMap") @Select("select * from account where uid = #{id}") List<Account> findAccountById(Integer id); }
注解一对多 many = @many
public interface UserMapper { @Select("select * from user") @Results(id="userMap" ,value = { @Result(id=true,column = "id" , property = "userId"), @Result(id=false,column = "birthday" , property = "userBirthday"), @Result(id=false,column = "username" , property = "userName"), @Result(id=false,column = "sex" , property = "userSex"), @Result(id=false,column = "address" , property = "userAddress"), @Result(column = "id", property = "accounts" , many = @Many(select = "com.wei.mapper.AccountMapper.findAccountById",fetchType = FetchType.LAZY)) }) List<User> findAll2(); //resultMap 结果映射的复用,即指定id。 @ResultMap("userMap") @Select("select * from user where id = #{id}") User findUserById(Integer id); }
注解开发中使用二级缓存
- 在注解中,和XML一样,默认存在一级缓存。
- 同一sqlSessionFactory创建的sqlsession可以使用二级缓存。
- 在mapper接口上添加注解
- @CacheNamespace(blocking = true)
- 即可开启二级缓存
- 对应xml开启二级缓存
<!--配置开启二级缓存,在对应的mapper映射文件添加标签--> <cache/>
<settings> <!--默认开启缓存--> <setting name="cacheEnabled" value="true"/> </settings>
相关文章推荐
- 【Spring+SpringMVC+MyBatis深入学习及搭建】16.SpringMVC注解开发(高级篇)
- Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- 基于maven的Mybatis环境搭建&简单注解开发
- 开始搭建 myBatis.net + Spring.net + asp.net mvc 3 + easyUI 开发平台
- Spring MVC + MyBatis+Maven 零基础搭建Web开发框架(注解模式哦)
- (*****)Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式)
- 从0开始搭建springboot开发模板-整合mybatis
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- SpringMVC+Spring+Mybatis 环境搭建问题记录(注解开发)
- Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇)
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- MyBatis学习笔记之使用注解开发
- Java后台开发<二>:Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
- Spring、Spring MVC、Mybatis开发环境搭建
- MyBatis入门(五)注解开发