免費學習推薦:#mysql影片教學
#mybatis
mybatis-config.xml詳細配置(配置時要把多餘的屬性刪除不能有中文否則報錯!)<?xml version="1.0" encoding="UTF-8" ?>nbsp;configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置 配置文件的根元素 --><configuration>
<!-- 属性:定义配置外在化 -->
<properties></properties>
<!-- 设置:定义mybatis的一些全局性设置 -->
<settings>
<!-- 具体的参数名和参数值 -->
<setting></setting>
</settings>
<!-- 类型名称:为一些类定义别名 -->
<typealiases>
<!-- 实体类少 建议 第一种取别名方式-->
<typealias></typealias>
<!--实体类多 建议 第二种取别名方式
默认情况下用这种方式 别名为类名 首字母最好小写
-->
<package></package>
</typealiases>
<!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系 -->
<typehandlers></typehandlers>
<!-- 对象工厂 -->
<objectfactory></objectfactory>
<!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则 -->
<plugins>
<plugin></plugin>
</plugins>
<!-- 环境:配置mybatis的环境 -->
<environments>
<!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
<environment>
<!-- 事务管理器 -->
<transactionmanager></transactionmanager>
<!-- 数据源 配置连接我的数据库-->
<datasource>
<property></property>
<property></property>
<property></property>
<property></property>
</datasource>
</environment>
</environments>
<!-- 数据库厂商标识 -->
<databaseidprovider></databaseidprovider>
<!-- 映射器:指定映射文件或者映射类 -->
<mappers>
<mapper></mapper>
</mappers></configuration>
#減少資料存取量
第一種:使用Mybatis
# 1介面
List<user> getUserByLimit(Map<string> map);</string></user>
2mapeer.xml
<select> select * from mybatis.user limit ${starIndex},${pageSize} </select>
# 2-1結果集映射
<resultmap> <result></result> </resultmap>
3測試 @Test
public void getUserByLimitTest() {
SqlSession sqlSession = MyBatisUtils.getSqlSession ();
UserMapper mapper = sqlSession.getMapper (UserMapper.class);
HashMap hashMap = new HashMap<string> ();
hashMap.put ("starIndex", 1);
hashMap.put ("pageSize", 2);
List userByLimit = mapper.getUserByLimit (hashMap);
for (Object o : userByLimit) {
System.out.println (o);
}
sqlSession.close ();
}</string>
第二種:使用RowBounds方法
1.介面
2.實作介面
<select> select * from mybatis.user </select>
3.測試: /**
* 测试使用RowBounds实现分页
*/@Test
public void getUserByLimitRowBoundsTest() {
SqlSession sqlSession = MyBatisUtils.getSqlSession ();
RowBounds rowBounds = new RowBounds (0, 2);
List<user> userList = sqlSession.selectList ("com.kuang.w.dao.UserMapper.getUserList", null, rowBounds);
for (User user : userList) {
System.out.println (user);
}
//关闭
sqlSession.close ();
}</user>
#第三種:使用Mybatis的分頁外掛pageHeIper
sql 多對一處理
資料庫:
pojo
資料庫中teacher-table表對應實體類別Teacher
package com.kuang.w.pojo; import lombok.Data; /** * @author W */ @Data public class Teacher { private int tId; private String tName; }
資料庫中user表對應實體類別Student
package com.kuang.w.pojo;import lombok.Data;/** * @author W */@Datapublic class Student { private int id; private int tid; private String name; private String password; private Teacher teacher;}
1.介面
List<student> getStudentList();</student>
2.xml設定實作介面
<!-- 多对一查询 1 子查询 mysql 通过一个表里是数据 与另一个表的一个数据相的情况下 查询另一个的数据 一起显示 --> <select> select * from mybatis.user; </select> <resultmap> <!-- 复杂属性 对象用 :association 集合用:collection--> <!--column 数据库中的字段 property 实体类中的属性--> <result></result> <result></result> <result></result> <!--javaType 一个 Java 类的全限定名 ,或一个类型别名(关于内置的类型别名,可以参考上面的表格)。 如果你映射到一个 JavaBean,MyBatis 通常可以推断类型。 然而,如果你映射到的是 HashMap, 那么你应该明确地指定 javaType 来保证行为与期望的相一致。--> <association></association> </resultmap> <select> select * from mybatis.teacher_table where tid = #{id}; </select>
<!--2 多表联查--> <select> select u.id uid, u.name uname, u.password upassword, u.tid utid, t.tname from mybatis.user u, mybatis.teacher_table t where t.tid = u.tid; </select> <!-- 映射--> <resultmap> <result></result> <result></result> <result></result> <result></result> <association> <result></result> </association> </resultmap>
mybatis-config.xm設定
<?xml version="1.0" encoding="UTF8" ?>nbsp;configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties></properties> <settings> <setting></setting> </settings> <typealiases> <typealias></typealias> <typealias></typealias> </typealiases> <environments> <environment> <transactionmanager></transactionmanager> <datasource> <property></property> <property></property> <property></property> <property></property> </datasource> </environment> </environments> <mappers> <!-- <mapper resource="com/kuang/w/dao/TeacherMapper.xml"></mapper> <mapper resource="com/kuang/w/dao/StudentMapper.xml"></mapper>--> <mapper></mapper> <mapper></mapper> </mappers></configuration>
3 測試 @Test
public void getStudentListTest() {
SqlSession sqlSession = MyBatisUtils.getSqlSession ();
StudentMapper mapper = sqlSession.getMapper (StudentMapper.class);
List<student> studentList = mapper.getStudentList ();
for (Student student : studentList) {
System.out.println (student);
}
sqlSession.commit ();
sqlSession.close ();
}</student>
#資料表結構對應的實體類別不變
1介面
List<teacher> getTeacher(int tid);</teacher>
2.1 xml實作介面
<select> select t.tid, t.tname, u.id, u.name, u.password from mybatis.user u, mybatis.teacher_table t where t.tid = u.tid and t.tid = #{tid}; </select>
2.2對應設定
<resultmap> <result></result> <result></result> <!-- 复杂属性 对象用 :association 集合用:collection--> <collection> <!--javaType 指定属性类型 一个 Java 类的全限定名--> <result></result> <result></result> <result></result> <result></result> </collection> </resultmap>
3測試
/*测试一对多*/ @Test public void getTeacherTest2() { SqlSession sqlSession = MyBatisUtils.getSqlSession (); TeacherMapper mapper = sqlSession.getMapper (TeacherMapper.class); List<teacher> teacher = mapper.getTeacher (1); for (Teacher teacher1 : teacher) { System.out.println (teacher1); } //提交事务 架子 这里可以不要 sqlSession.commit (); // 关闭 sqlSession.close (); }</teacher>
結果
com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.kuang.w.dao.myTest,getTeacherTest2 Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.PooledDataSource forcefully closed/removed all connections.PooledDataSource forcefully closed/removed all connections.PooledDataSource forcefully closed/removed all connections.PooledDataSource forcefully closed/removed all connections.Opening JDBC Connection Created connection 164974746.Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@9d5509a]==> Preparing: select t.tid, t.tname, u.id, u.name, u.password from mybatis.user u, mybatis.teacher_table t where t.tid = u.tid and t.tid = ?; ==> Parameters: 1(Integer)第二種方式: 子查詢1介面
List<teacher> getTeacher(int tid);</teacher>2 實作介面
<!--第二种方式: 子查询--> <select> select * from mybatis.teacher_table where tid = #{tid}; </select> <resultmap> <!-- 复杂属性 对象用 :association 集合用:collection 我们需要单独处理对象: association 集合: collection javaType=""指定属性的类型! 集合中的泛型信息,我们使用ofType 获取 --> <result></result> <result></result> <collection> </collection> </resultmap> <select> select * from mybatis.user where tid = #{tid}; </select>3測試同上。 。 。 。######相關免費學習推薦:mysql資料庫
(影片)
以上是了解Mybatis的基礎的詳細內容。更多資訊請關注PHP中文網其他相關文章!