导读:
Mybatis:
1.依赖包:
(1)spring:
1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis</artifactId> 4 <version>3.5.2</version> 5 </dependency>
1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis-spring</artifactId> 4 <version>1.3.2</version> 5 </dependency>
(2)spring boot:
1 <dependency> 2 <groupId>org.mybatis.spring.boot</groupId> 3 <artifactId>mybatis-spring-boot-starter</artifactId> 4 <version>2.1.0</version> 5 </dependency>
2.配置:
(1)spring:
- 新建一个mybatis的l配置文件mybatis-config.xml,用于mybatis基本信息的配置:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 <configuration> 7 8 <!--加载数据库配置文件--> 9 <properties resource="db.properties"/> 10 11 <!--常用设置--> 12 <settings> 13 <!-- 懒加载。如果设为‘false',则所有相关联的都会被初始化加载。 --> 14 <setting name="lazyLoadingEnabled" value="true"/> 15 <!-- 当设置为‘true'的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。 --> 16 <setting name="aggressiveLazyLoading" value="false"/> 17 <!--日志信息打印--> 18 <setting name="logImpl" value="STDOUT_LOGGING"/> 19 <!--缓存设置--> 20 <setting name="cacheEnabled" value="true"/> 21 <!--驼峰命名--> 22 <setting name="mapUnderscoreToCamelCase" value="true"/> 23 </settings> 24 25 <!--别名设置--> 26 <typeAliases> 27 <package name="com.wsw.entity"/> 28 </typeAliases> 29 30 <!--插件配置--> 31 <plugins> 32 <plugin interceptor=""></plugin> 33 </plugins> 34 35 <!--环境配置--> 36 <environments default=""> 37 <environment id=""> 38 <!--事务管理--> 39 <transactionManager type=""> 40 <property name="" value=""/> 41 </transactionManager> 42 <!--数据源配置--> 43 <dataSource type=""> 44 <property name="" value=""/> 45 <property name="" value=""/> 46 </dataSource> 47 </environment> 48 </environments> 49 50 <!--映射文件配置:下面三种方式可随机采用其中一种--> 51 <mappers> 52 <!--相对路径文件映射--> 53 <mapper resource=""/> 54 <!--绝对路径文件映射--> 55 <mapper url=""/> 56 <!--包映射--> 57 <package name=""/> 58 </mappers> 59 60 </configuration>
- 在spring的配置文件applicationContext.xml中配置mybatis的sqlSessionFactory,同时加载mybatis的配置文件:
1 <!-- 配置sqlSessionFactory,SqlSessionFactoryBean是用来产生sqlSessionFactory的 --> 2 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 3 <!-- 加载mybatis的全局配置文件 --> 4 <property name="configLocation" value="classpath:mybatis-config.xml"/> 5 </bean>
(2)spring boot(yaml):
- 在spring boot的全局配置文件application.yaml中配置mybatis相关属性:
1 mybatis-plus: 2 #别名设置 3 type-aliases-package: com.wsw.springboot.entity 4 #加载mybatis全局配置文件 5 #config-location: src/main/resources/mybatis-config.xml 6 #映射文件扫描 7 #mapper-locations: 8 configuration: 9 #懒加载设置 10 lazy-loading-enabled: true 11 #日志打印 12 #log-impl: 13 #驼峰命名 14 map-underscore-to-camel-case: true 15 #缓存设置 16 cache-enabled: true 17 #主键自动生成并获取 18 use-generated-keys: true
3.使用:
实体类:
1 @Data 2 @ToString 3 @AllArgsConstructor 4 @NoArgsConstructor 5 public class User { 6 /** 7 * 用户编号 8 */ 9 private int uId; 10 /** 11 * 用户姓名 12 */ 13 private String uName; 14 /** 15 * 用户性别 16 */ 17 private int uSex; 18 /** 19 * 用户年龄 20 */ 21 private int uAge; 22 /** 23 * 用户身份证 24 */ 25 private String uIdentity; 26 /** 27 * 用户出生日期 28 */ 29 private Timestamp uBirth; 30 /** 31 * 关联学校:1:1 32 */ 33 private School school; 34 }
dao层接口:
1 @Repository 2 public interface UserDao { 3 4 /** 5 * 查看所有用户 6 * @return 7 */ 8 List<User> selectAll(); 9 10 /** 11 * 插入一条用户记录 12 * @param user 13 */ 14 void insertOne(User user); 15 16 /** 17 * 分页查询 18 * @param pageNum:偏移量,代表从第pageNum+1的位置开始取记录 19 * @param pageCount:取记录的总数 20 * @return 21 */ 22 List<User> selectByPageNo(@Param("pageNum") int pageNum, @Param("pageCount") int pageCount); 23 24 /** 25 * 查询所有记录数 26 * @return 27 */ 28 int selectTotalCount(); 29 30 }
映射文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 5 <mapper namespace="com.sunsharing.dao.UserDao"> 6 7 <resultMap id="asossiateWithSchool" type="com.sunsharing.entity.User"> 8 <id property="uId" column="u_id"/> 9 <result property="uName" column="u_name"/> 10 <result property="uSex" column="u_sex"/> 11 <result property="uAge" column="u_age"/> 12 <result property="uBirth" column="u_birth"/> 13 <association property="school" javaType="com.sunsharing.entity.School" column="school_id" select="selectSchool"> 14 <result property="schoolName" column="school_name"/> 15 </association> 16 </resultMap> 17 18 <select id="selectAll" resultMap="asossiateWithSchool"> 19 select *from `user` 20 </select> 21 22 <select id="selectSchool" resultType="com.sunsharing.entity.School"> 23 select *from school where school_id=#{schoolId} 24 </select> 25 26 27 <insert id="insertOne" parameterType="com.sunsharing.entity.User"> 28 INSERT INTO `react`.`user` 29 (`u_id`, `u_name`, `u_sex`, `u_age`, `u_identity`, `u_birth`) 30 VALUES 31 (#{uId}, #{uName},#{uSex}, #{uAge}, #{uIdentity}, #{uBirth}) 32 </insert> 33 34 <parameterMap id="parameters" type="int"> 35 <parameter property="pageNum" javaType="int"/> 36 <parameter property="pageCount" javaType="int"/> 37 </parameterMap> 38 39 <select id="selectByPageNo" parameterMap="parameters" resultType="com.sunsharing.entity.User"> 40 select *from `user` limit #{pageNum},#{pageCount} 41 </select> 42 43 <select id="selectTotalCount" resultType="int"> 44 select count(0) from `user` 45 </select> 46 47 </mapper>
文章待完善。。。