首先这次学习mybatis,得先下载idea软件。maven在idea上好操作点,破解方案自行百度。这里暂不详细介绍。
当然学习mybatis框架需要一定基础,对于jdbc+mysql底层实现有一定认识,这里就不在讲解。
mybatis还是很简单的,网上教程一大堆,很可能你看一堆都比我的写得好。对于三天对mybatis的学习,在这里对知识点写下一个总结,不然后面硬盘坏了,又没了。
链接:https://pan.baidu.com/s/1qp44GPp7xgCFjr_y9jcnXw 提取码:kecl
对于mybatis。ssh框架不能写sql,但是后期不能优化,ssm框架可以优化sql,对于性能好一些。
-
简单mybatis
这是最初的练习,可能注释有问题,但是后面的代码就纠正过来了。
为了更好的xml分离,就创建了一个文件夹,然后转成编译包,在再下面创建相同的mapper包。
package org.lisonglin.entity;
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
<?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>
<settings>
<!-- 对数据库与属性不一致,自动转换 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/stus"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 调用dao层 -->
<mapper resource="org/lisonglin/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
package org.lisonglin.mapper;
import org.apache.ibatis.annotations.Param;
import org.lisonglin.entity.Student;
public interface StudentMapper {
Student get(int id);
void insert(Student stu);
void insertInfo(@Param("name") String name, @Param("age") int age);
}
<?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="org.lisonglin.mapper.StudentMapper">
<select id="get" resultType="org.lisonglin.entity.Student">
select * from student where id=#{id}
</select>
<insert id="insert">
insert into student values(null,#{name},#{age})
</insert>
<insert id="insertInfo">
insert into student values(null,#{name},#{age})
</insert>
</mapper>
package org.lisonglin.test;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.lisonglin.entity.Student;
import org.lisonglin.mapper.StudentMapper;
import java.io.IOException;
import java.io.InputStream;
public class TestMyBatis {
@Test
public void test(){
InputStream is=null;
try {
//获取src下全局配置文件的输入流
is = Resources.getResourceAsStream("mybatis-config.xml");
//获取SqlSessionFactory对象
SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
// Student student = mapper.get(1);
// System.out.print(student);
// Student s=new Student();
// s.setName("bb");
// s.setAge(12);
// mapper.insert(s);
mapper.insertInfo("cc",13);
//手动提交
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
}
}
}
-
进一步学习mybatis
其中有原生DAO的写法,用于理清mybatis的实现思路,还有就是因为老师说注解方式耦合性不高,就没有继续完成相应功能。不多说看下面代码。
package org.lisonglin.entity;
public class Student {
private int id;
private String sName;
private int age;
public final static String MYBATIS_CONFIG_FILE="mybatis-config2.xml";
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getsName() {
return sName;
}
public void setsName(String sName) {
this.sName = sName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", sName='" + sName + '\'' +
", age=" + age +
'}';
}
public Student(int id, String sName, int age) {
this.id = id;
this.sName = sName;
this.age = age;
}
public Student() {
}
}
<?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="jdbc.properties"></properties>
<settings>
<!--把数据中的下划线改为驼峰命名法-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<!-- 别名 -->
<!--<typeAlias type="org.lisonglin.entity.Student" alias="Student"></typeAlias>-->
<!-- 直接导包 -->
<package name="org.lisonglin.entity"></package>
</typeAliases>
<!-- 配置坏境变量,可以配置多个,默认值与id一致 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager><!--事务-->
<dataSource type="POOLED"><!-- 数据源 连接池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>
<!--配置映射文件-->
<mappers>
<!--基于XML配置文件-->
<!--<mapper resource="org/lisonglin/mapper/StudentMapper.xml"/>-->
<package name="org.lisonglin.mapper"></package>
</mappers>
</configuration>
package org.lisonglin.mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.lisonglin.entity.Student;
import java.util.List;
public interface StudentMapper {
/**
* XML配置方式
* @param id
* @return
*/
Student get(int id);
void insert(Student stu);
void insertInfo(@Param("name") String name, @Param("age") int age);
List<Student> getAll();
int insertStudentCacheId(Student stu);
List<Student> getByName(@Param("key") String key);
List<Student> getByIds(@Param("ids") int ... ids);
List<Student> getStudents(Student stu);
/**
* 注解方式(代码耦合性不高,不推荐)
* @param stu
* @return
*/
@Select("insert into stu(id,s_name,age) values(null,#{name},#{age})")
public int add(Student stu);
}
<?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="org.lisonglin.mapper.StudentMapper">
<!-- 通用sql -->
<sql id="selectInfo">
select * from stu
</sql>
<select id="getById" resultType="Student" parameterType="int">
<!-- 引入通用sql -->
<include refid="selectInfo"></include>
where id=#{id}
</select>
<select id="getStudents" resultType="Student">
<include refid="selectInfo"></include>
<!-- 条件查询,如果没有符合条件,那么sql中的and会自动去掉 -->
<where>
<!-- 判断中属性是bean中的命名 -->
<if test="sName != null">
and s_name = #{sName}
</if>
<if test="age!=0">
and age = #{age}
</if>
</where>
</select>
<select id="getByIds" resultType="Student">
<include refid="selectInfo"></include>
<where>
<!--<foreach collection="ids" open="id in (" close=")" separator="," item="id">-->
<!--id=#{id}-->
<!--</foreach>-->
<foreach collection="ids" item="id" separator="or">
id=#{id}
</foreach>
</where>
</select>
<select id="get" resultType="Student" parameterType="int">
select * from stu where id=#{id}
</select>
<insert id="insert">
insert into stu values(null,#{name},#{age})
</insert>
<insert id="insertInfo">
insert into stu values(null,#{name},#{age})
</insert>
<select id="getAll" resultType="Student">
select * from stu
</select>
<!-- 查询出增加的主键(方法一) -->
<insert id="insertStudentCacheId" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
insert into stu values(null,#{sName},#{age})
</insert>
<!-- 方法二 -->
<insert id="insertStudentId">
<selectKey keyProperty="id" keyColumn="id" order="AFTER" resultType="int">
<!-- 查询自增id (方法一) -->
select last_insert_id()
<!--方法二-->
<!--select @@identity-->
</selectKey>
insert into stu values(null,#{sName},#{age})
</insert>
<select id="getByName" resultType="Student">
<!-- ${} 拼接sql #{} 占位符 -->
<!-- 推荐使用这种 -->
<!-- select * from stu where s_name like '%' #{key} '%' -->
<bind name="new_key" value="'%'+key+'%'"></bind>
<include refid="selectInfo"></include>
where s_name like #{new_key}
<!-- select * from stu where s_name like concat('%',#{key},'%') -->
<!-- 这种不建议使用,这种使用statement查询方式,有sql注入风险 -->
<!-- select * from stu where s_name like '%${key}%' -->
</select>
</mapper>
package org.lisonglin.servlet;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.lisonglin.entity.Student;
import org.lisonglin.mapper.StudentMapper;
import java.io.IOException;
import java.io.InputStream;
public class DataUtil {
private static SqlSessionFactory sqlSessionFactory;
public static StudentMapper getStudentMapper(){
InputStream is=null;
try {
is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = build.openSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
return mapper;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static SqlSessionFactory getSqlSessionFactory(){
InputStream is=DataUtil.class.getClassLoader().getResourceAsStream(Student.MYBATIS_CONFIG_FILE);
return new SqlSessionFactoryBuilder().build(is);
}
/**
* @param autoCommit
* true:表示创建的SqlSession对象在执行完SQL之后自动提交事务
* false:表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用SqlSession.commit()提交事务
* @return
*/
public static SqlSession getSqlSession(boolean autoCommit){
return getSqlSessionFactory().openSession(autoCommit);
}
public static SqlSession getSqlSession(){
return getSqlSessionFactory().openSession();
}
}
package org.lisonglin.test;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.lisonglin.dao.StudentImpl;
import org.lisonglin.entity.Student;
import org.lisonglin.mapper.StudentMapper;
import org.lisonglin.servlet.DataUtil;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class MyTest {
private SqlSessionFactory sqlSessionFactory;
@Test
public void getStudentByAgeOrNames(){
StudentMapper studentMapper = DataUtil.getStudentMapper();
Student student=new Student();
student.setAge(20);
System.out.println(student.toString());
List<Student> studentByAgeOrName = studentMapper.getStudents(student);
System.out.println(studentByAgeOrName);
}
@Test
public void getByIdsStudent(){
StudentMapper studentMapper = DataUtil.getStudentMapper();
List<Student> byIds = studentMapper.getByIds(1, 2, 3);
System.out.println(byIds);
}
@Test
public void getByNameStu(){
StudentMapper studentMapper = DataUtil.getStudentMapper();
List<Student> a = studentMapper.getByName("a");
System.out.println(a);
}
@Test
public void getMapperAll(){
StudentMapper sqlSession = DataUtil.getStudentMapper();
List<Student> all = sqlSession.getAll();
System.out.print(all.toString());
}
/**
* mybatis代理模式
*/
@Test
public void getMapperMybatis(){
StudentMapper sqlSession = DataUtil.getStudentMapper();
Student student = sqlSession.get(1);
System.out.print(student);
}
@Test
public void insertGetId(){
StudentMapper studentMapper = DataUtil.getStudentMapper();
Student stu=new Student();
stu.setAge(12);
stu.setsName("aaa");
int i = studentMapper.insertStudentCacheId(stu);
System.out.println(i);
System.out.println(stu.getId());
}
/**
* 原生Dao开发
*/
@Test
public void getDaoMyBatis(){
String resource = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
StudentMapper studentMapper=new StudentImpl(sqlSessionFactory);
Student student = studentMapper.get(2);
System.out.print(student);
}
}
-
完整mybatis学习
这在最后是maven+mybatis,其中有自动生成generatorConfig插件,不过这个后面用熟悉了再用这个插件吧。
还有log4j日志打印,一级缓存和二级缓存,数据库多表连接,一对一映射和一对多映射。还有一个懒加载,分页
pagehelper的使用。
首先maven对jar包有一个相当于中央仓库的作用,减少项目的没用的东西,因为我们写的以前项目,很多东西其实只有一点点,而其他文件占比相当大,maven的好处就是把jar包放在一个文件夹下,用的时候就导出来用。
maven项目创建太晚就不写了,自行百度把。
groupId:相当于项目别名把
artifactId:项目名
dependencies:配置jar包
在pom.xml中写相关jar包的xml配置,在这个网站搜索https://mvnrepository.com/
复制到pom.xml的
在ssm下创建一个web项目,相当于一个版块,然后在点击右键设置Add Framework .....添加pom.xml,然后在这个pom.xml中添加
<dependency> <groupId>java</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
相对你的总项目的名字,在artifactId中添加ssm后,它会自动添加。
dependencies标签对里,它会自动下载jar包。
package org.lisonglin.entity;
import java.io.Serializable;
import java.util.List;
public class Teacher implements Serializable {
private int id;
private String name;
private int age;
private Wifes wife;
private List<User> user;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Wifes getWife() {
return wife;
}
public void setWife(Wifes wife) {
this.wife = wife;
}
public List<User> getUser() {
return user;
}
public void setUser(List<User> user) {
this.user = user;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", wife=" + wife +
", user=" + user +
'}';
}
}
package org.lisonglin.entity;
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
package org.lisonglin.entity;
import java.io.Serializable;
public class Wifes implements Serializable {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Wifes{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
package org.lisonglin.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.lisonglin.mapper.UserMapper;
import java.io.IOException;
import java.io.InputStream;
public class MyBatis {
public static SqlSession getSqlSession(){
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
<?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="jdbc.properties"></properties>
<settings>
<!--把数据中的下划线改为驼峰命名法-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--二级缓存开关-->
<setting name="cacheEnabled" value="true"></setting>
<!--允许返回多个结果集-->
<setting name="multipleResultSetsEnabled" value="true"></setting>
<!--日志-->
<setting name="logImpl" value="LOG4J"></setting>
<!-- 延迟加载总开关 -->
<setting name="lazyLoadingEnabled" value="false"/>
<!-- 侵入懒加载,设置为false则按需加载,否则会全部加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<typeAliases>
<!-- 别名 -->
<!--<typeAlias type="org.lisonglin.entity.Student" alias="Student"></typeAlias>-->
<!-- 直接导包 -->
<package name="org.lisonglin.entity"></package>
</typeAliases>
<!-- 配置分页插件 -->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--<!– 设置方言 –>-->
<!--<property name="dialect" value="mysql"/>-->
<!--<!–设置为true时,使用RowBounds分页会进行count查询 –>-->
<!--<property name="offsetAsPageNum" value="false" />-->
<!--<!– 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 –>-->
<!--<property name="rowBoundsWithCount" value="true" />-->
</plugin>
</plugins>
<!-- 配置坏境变量,可以配置多个,默认值与id一致 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager><!--事务-->
<dataSource type="POOLED"><!-- 数据源 连接池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>
<!--配置映射文件-->
<mappers>
<!--基于XML配置文件-->
<!--<mapper resource="org/lisonglin/mapper/StudentMapper.xml"/>-->
<package name="org.lisonglin.mapper"></package>
</mappers>
</configuration>
package org.lisonglin.mapper;
import org.lisonglin.entity.Teacher;
import java.util.List;
public interface TeacherMapper {
Teacher getTeacher(int id);
Teacher get(int id);
List<Teacher> getAll();
List<Teacher> getAll1();
}
package org.lisonglin.mapper;
import org.lisonglin.entity.Teacher;
import org.lisonglin.entity.User;
import javax.print.Doc;
import java.util.List;
public interface UserMapper {
List<User> getByUserId(int teacherid);
List<User> getAllUser();
}
package org.lisonglin.mapper;
import org.lisonglin.entity.Wifes;
public interface WifesMapper {
Wifes getByWifesId(int teacherid);
}
<?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="org.lisonglin.mapper.TeacherMapper">
<!--延迟加载-->
<resultMap id="selectTeacher" type="Teacher">
<id property="id" column="id"></id>
<!--一对一映射-->
<association property="wife" column="id" select="org.lisonglin.mapper.WifesMapper.getByWifesId" fetchType="lazy">
</association>
<!--一对多映射-->
<collection property="user" column="id" select="org.lisonglin.mapper.UserMapper.getByUserId" fetchType="lazy"></collection>
</resultMap>
<select id="getTeacher" resultMap="selectTeacher">
select * from teachers where id=#{id}
</select>
<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>
<resultMap id="selectClass" type="Teacher">
<id column="tid" property="id"></id>
<result column="tname" property="name"></result>
<result column="tage" property="age"></result>
<!--一对一映射-->
<association property="wife" javaType="Wifes">
<id column="wid" property="id"></id>
<result column="wname" property="name"></result>
</association>
<!--一对多映射-->
<collection property="user" ofType="User">
<id column="uid" property="id"></id>
<result column="uname" property="name"></result>
<result column="uage" property="age"></result>
</collection>
</resultMap>
<select id="get" resultMap="selectClass">
select u.id uid,u.`name` uname,u.age uage,
t.id tid,t.`name` tname,t.age tage,
w.id wid,w.`name` wname
from `user` u
join teachers t
on u.teacher=t.id
join wifes w
on t.wife=w.id
where t.id=#{id}
</select>
<select id="getAll" resultMap="selectClass">
select u.id uid,u.`name` uname,u.age uage,
t.id tid,t.`name` tname,t.age tage,
w.id wid,w.`name` wname
from `user` u
join teachers t
on u.teacher=t.id
join wifes w
on t.wife=w.id
</select>
<select id="getAll1" resultMap="selectTeacher">
select * from teachers
</select>
</mapper>
<?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="org.lisonglin.mapper.UserMapper">
<select id="getAllUser" resultType="User">
select * from user
</select>
<select id="getByUserId" resultType="User">
select * from `user` where teacher=#{id}
</select>
</mapper>
<?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="org.lisonglin.mapper.WifesMapper">
<select id="getByWifesId" resultType="Wifes">
select * from wifes where id=#{id}
</select>
</mapper>
package org.lisonglin.test;
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.lisonglin.entity.Teacher;
import org.lisonglin.entity.User;
import org.lisonglin.mapper.TeacherMapper;
import org.lisonglin.mapper.UserMapper;
import org.lisonglin.util.MyBatis;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyTest {
@Test
public void test(){
SqlSession sqlSession = MyBatis.getSqlSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = mapper.get(1);
System.out.println(teacher);
SqlSession sqlSession1 = MyBatis.getSqlSession();
TeacherMapper mapper1 = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher1 = mapper1.get(1);
System.out.println(teacher1);
sqlSession1.close();
}
@Test
public void test2(){
InputStream is = null;
try {
is = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = mapper.get(1);
System.out.println(teacher);
sqlSession.close();
SqlSession sqlSession1 = sqlSessionFactory.openSession();
TeacherMapper mapper1 = sqlSession1.getMapper(TeacherMapper.class);
Teacher teacher1 = mapper1.get(1);
System.out.println(teacher1);
sqlSession1.close();
}
@Test
public void testGetLayz(){
SqlSession sqlSession = MyBatis.getSqlSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = mapper.getTeacher(2);
System.out.println(teacher.getName());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(teacher.getWife());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(teacher.getUser());
}
@Test
public void testPageHelper() {
SqlSession sqlSession = MyBatis.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
PageHelper.startPage(1,3);
List<User> all = mapper.getAllUser();
System.out.println(all);
}
@Test
public void testPageHelperAll(){
SqlSession sqlSession = MyBatis.getSqlSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
PageHelper.startPage(1,3);
List<Teacher> all = mapper.getAll1();
System.out.println(all);
}
}
其他文件配置就不多写了,还有一个项目to,里面有自动生成javabean+mybatis的插件使用,ok!