一基本的增删改查
要完成增删改查首先要把配置好mybatis
首先在main当中创建好java,resourece文件夹以及在src中创建一个test文件夹用来供测试使用
然后配置pom文件引入核心依赖
<!--引入mybatis框架-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<!-- 引入struts2依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.33</version>
</dependency>
<!-- 引入Servlet的核心依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
但是要注意如果要把实体类的映射文件与实体类放在一起就要把pom文件中
解决java文件无法编译xml文件的问题
然后在配置mybatis的配置文件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>
<typeAliases>
<!-- <typeAlias type="com.hlp.entity.Student" alias="Student"></typeAlias>-->
<package name="com.hlp.entity"/>
</typeAliases>
<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/pro?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--添加映射文件 映射实体类的映射文件-->
<mappers>
<mapper resource="com/hlp/entity/Student.xml"></mapper>
</mappers>
</configuration>
配置实体类文件,该文件中完成增删改查
public class testCURD {
private SqlSession session;
@Before
public void before(){
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(getClass().getClassLoader().getResourceAsStream("Mybatis_config.xml"));
session= factory.openSession();
}
@Test
public void alltest(){
/* List<Student> list=session.selectList("student.selectStudent");
for (Student l : list) {
System.out.println(l.getSname());
}*/
/* Student student=session.selectOne("student.selectStudentById",1);
System.out.println(student.getSname());*/
/* Student stu=new Student("小小","女",20);
session.insert("student.addStudent",stu);*/
/*修改一条数据*/
StudentDao stud=session.getMapper(StudentDao.class);
Student student=stud.selectStudentById(1);
student.setSname("周毅");
stud.updateStudent(student);
/*使用dao模式*/
/* StudentDao stud=session.getMapper(StudentDao.class);
List<Student> list=stud.selectStudent();
for (Student student1 : list) {
System.out.println(student1.getSname());
}*/
/* stud.deleteStudentById(2);*/
}
@After
public void after(){
session.commit();
session.close();
}
}
二.一对一
<?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="users">
<select id="findUsers" resultType="Users">
select * from users;
</select>
<!--自定义类型 一对一关系中所需要的自定义类型-->
<resultMap id="UsersAndCard" type="Users">
<id property="uid" column="UID"></id>
<result property="uname" column="UNAME"></result>
<association property="card" javaType="Card">
<result property="uid" column="UID"></result>
<result property="number" column="NUMBER"></result>
</association>
</resultMap>
<select id="findUsersAndCard" parameterType="int" resultMap="UsersAndCard">
select u.*,c.* from users u,card c where u.uid=c.uid and u.uid=#{uid};
</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="province">
<!--一对多自定义类型-->
<resultMap id="ProvinceAndCity" type="Province">
<id property="pid" column="PID"></id>
<result property="pname" column="PNAME"></result>
<collection property="cities" column="pid" ofType="City">
<id property="cid" column="CID"></id>
<result property="cname" column="CNAME"></result>
</collection>
</resultMap>
<select id="findProvinceAndCity" parameterType="int" resultMap="ProvinceAndCity">
select p.*,c.* from province p,city c where p.pid=c.pid and p.pid=#{pid};
</select>
</mapper>
一对一和一对多的测试方法省略,和基本的增删改查的调用方式相同