mybatis 入门

jdbc.properties

db.username=root
db.password=root
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8


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="jdbc.properties"></properties>
<!-- 给类实体取别名 -->
<typeAliases>
<!-- many2many -->
<typeAlias type="cn.itcast.mybatisrelation.many2many.Student" alias="Student"/>
<typeAlias type="cn.itcast.mybatisrelation.many2many.Course" alias="Course"/>
<!-- one2many -->
<typeAlias type="cn.itcast.mybatisrelation.one2many.Dept" alias="Dept"/>
<typeAlias type="cn.itcast.mybatisrelation.one2many.Emp" alias="Emp"/>
<!-- one2one -->
<typeAlias type="cn.itcast.mybatisrelation.one2one.Person" alias="Person"/>
<typeAlias type="cn.itcast.mybatisrelation.one2one.Passport" alias="Passport"/>
<!-- interceptor -->
<typeAlias type="cn.itcast.mybatisrelation.Interceptor.User" alias="User"/>
</typeAliases>

<plugins>
<plugin interceptor="cn.itcast.mybatisrelation.Interceptor.MyInterceptor">
<property name="prop1" value="jack"/>
<property name="prop2" value="张三"/>
</plugin>
</plugins>

<!-- 配置环境 -->
<environments default="default">
<environment id="default">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${db.driverClassName}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="url" value="${db.url}"/>
</dataSource>
</environment>
</environments>
<!-- 实体映射文件的注册 -->
<mappers>
<mapper resource="cn/itcast/mybatisrelation/many2many/Student.xml"/>
<mapper resource="cn/itcast/mybatisrelation/many2many/Course.xml"/>
<mapper resource="cn/itcast/mybatisrelation/one2many/Dept.xml"/>
<mapper resource="cn/itcast/mybatisrelation/one2many/Emp.xml"/>
<mapper resource="cn/itcast/mybatisrelation/one2one/Person.xml"/>
<mapper resource="cn/itcast/mybatisrelation/one2one/Passport.xml"/>
<mapper resource="cn/itcast/mybatisrelation/Interceptor/User.xml"/>
</mappers>
</configuration>

MybatisUtil.java

package cn.itcast.mybatisresultmap.util;

import java.io.IOException;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {

private static SqlSessionFactory factory=null;

static{
try {
factory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static SqlSession getSqlSession(){
return factory.openSession();
}

}

User.java

package cn.itcast.mybatisresultmap.crud;

import java.io.Serializable;

public class User implements Serializable {

private Integer id;
private String username;
private String password;

set get方法....
}
User.xml

<?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="cn.itcast.mybatisresultmap.crud.User">
<!-- 自定义结果集映射方式 -->
<resultMap type="User" id="userMapper">
<id property="id" column="user_id"/>
<result property="username" column="user_name"/>
<result property="password" column="user_password"/>
</resultMap>

<!-- 添加 -->
<insert id="save" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password})
</insert>

<!-- 查询所有 -->
<select id="list" resultMap="userMapper">
select * from t_user order by user_id
</select>

<!-- 修改 -->
<update id="update" parameterType="User">
update t_user set user_name=#{username},user_password=#{password} where user_id=#{id}
</update>

<!-- 根据id查询单条的记录 -->
<select id="get" parameterType="int" resultMap="userMapper">
select * from t_user where user_id=#{id}
</select>

<!-- 删除 -->
<delete id="delete" parameterType="int">
delete from t_user where user_id=#{id}
</delete>

</mapper>

test crud

import cn.itcast.mybatisresultmap.util.MybatisUtil;

public class MybatisCrudTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@Test // 查询所有
public void testList() {
SqlSession sqlSession=MybatisUtil.getSqlSession();
List<User> userList=sqlSession.selectList(User.class.getName()+".list");
for(User user:userList){
System.out.println("User对象是:"+user);
}
sqlSession.commit();
sqlSession.close();
}

@Test // 添加记录
public void testSave(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
User user=new User("小花","3333");
sqlSession.insert(User.class.getName()+".save", user);
sqlSession.commit();
sqlSession.close();
}

// 删除记录
@Test public void testDelete(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
sqlSession.delete(User.class.getName()+".delete", 10);
sqlSession.commit();
sqlSession.close();
}


// 根据id查询单条记录
@Test public void testGet(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
User user=sqlSession.selectOne(User.class.getName()+".get",2);
System.out.println("当前User对象是:"+user);
sqlSession.commit();
sqlSession.close();
}

// 修改记录
@Test public void testUpdate(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
User user=new User(5,"小五","5555");
sqlSession.update(User.class.getName()+".update", user);
sqlSession.commit();
sqlSession.close();
}

}

manytomany


public class Student implements Serializable {

private Integer id;
private String name;
private String sex;
private Date birthday;
private String hobby;

private List<Course> courseList=new ArrayList<Course>();

set get方法....
}

public class Course implements Serializable {

private Integer id;
private String code;
private String name;

private List<Student> studentList=new ArrayList<Student>();

set get方法.....

}

Student.xml

<?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="cn.itcast.mybatisresultmap.many2many.Student">
<!-- 自定义resultMapper -->
<resultMap type="Student" id="studentMapper">
<id property="id" column="student_id"/>
<result property="name" column="student_name"/>
<result property="sex" column="student_sex"/>
<result property="birthday" column="student_birthday"/>
<result property="hobby" column="student_hobby"/>
<collection property="courseList" ofType="Course">
<id property="id" column="course_id"/>
<result property="code" column="course_code"/>
<result property="name" column="course_name"/>
</collection>
</resultMap>

<!-- 添加数据 -->
<insert id="save" parameterType="Student" useGeneratedKeys="true" keyProperty="id">
insert into t_student values(null,#{name},#{sex},#{birthday},#{hobby})
</insert>

<select id="get" parameterType="int" resultMap="studentMapper">
select s.*,c.* from t_student s left join t_student_course sc on s.student_id=sc.sid left join t_course c
on c.course_id=sc.cid where s.student_id=#{id}
</select>


</mapper>

Course.xml

<?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="cn.itcast.mybatisresultmap.many2many.Course">

<!-- 自定义resultMap -->
<resultMap type="Course" id="courseMapper">
<id property="id" column="course_id"/>
<result property="code" column="course_code"/>
<result property="name" column="course_name"/>
<collection property="studentList" ofType="Student">
<id property="id" column="student_id"/>
<result property="name" column="student_name"/>
<result property="sex" column="student_sex"/>
<result property="birthday" column="student_birthday"/>
<result property="hobby" column="student_hobby"/>
</collection>
</resultMap>

<!-- 录入数据 -->
<insert id="save" parameterType="Course" useGeneratedKeys="true" keyProperty="id">
insert into t_course values(null,#{code},#{name})
</insert>

<!-- 录入中间表 -->
<insert id="saveMidTable" parameterType="hashmap" useGeneratedKeys="true" keyProperty="id">
insert into t_student_course values(null,#{sid},#{cid})
</insert>

<select id="get" parameterType="int" resultMap="courseMapper">
select c.*,s.* from t_course c left join t_student_course sc on c.course_id=sc.cid left join t_student s
on sc.sid=s.student_id where c.course_id=#{id}
</select>


</mapper>


public class Many2ManyTest {
private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@Test
public void testSave()throws Exception{

Course c1=new Course();
c1.setCode("c001");
c1.setName("js");
Course c2=new Course();
c2.setCode("c002");
c2.setName("freemarker");

Student s1=new Student();
s1.setName("小四");
s1.setSex("男");
s1.setBirthday(sdf.parse("1992-09-13"));
s1.setHobby("看书");

Student s2=new Student();
s2.setName("小小");
s2.setSex("女");
s2.setBirthday(sdf.parse("1992-08-13"));
s2.setHobby("逛街");

// 添加关系
s1.getCourseList().add(c1);
s1.getCourseList().add(c2);
s2.getCourseList().add(c1);
s2.getCourseList().add(c2);

SqlSession sqlSession=MybatisUtil.getSqlSession();
sqlSession.insert(Student.class.getName()+".save", s1);
sqlSession.insert(Student.class.getName()+".save", s2);
sqlSession.insert(Course.class.getName()+".save", c1);
sqlSession.insert(Course.class.getName()+".save", c2);

Map<String,Object> map=new HashMap<String,Object>();
// 中间表的处理
for(Course cc:s1.getCourseList()){
map.put("sid",s1.getId());
map.put("cid", cc.getId());
sqlSession.insert(Course.class.getName()+".saveMidTable", map);
}

for(Course cc:s2.getCourseList()){
map.put("sid",s2.getId());
map.put("cid", cc.getId());
sqlSession.insert(Course.class.getName()+".saveMidTable", map);
}

sqlSession.commit();
sqlSession.close();
}

/**
* 根据学生的主键id查询某个学生 并且查出这个学生的所有课程
*/
@Test public void testGetStudentById(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
Student stu=sqlSession.selectOne(Student.class.getName()+".get", 1);
System.out.println("stu是:"+stu);
for(Course cc:stu.getCourseList()){
System.out.println("cc是:"+cc);
}
sqlSession.commit();
sqlSession.close();
}

/**
* 根据课程的主键id查询某门课程 并且查出学这门课程的学生们
*/
@Test public void testGetCourseById(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
Course cc=sqlSession.selectOne(Course.class.getName()+".get", 8);
System.out.println("cc是:"+cc);
for(Student ss:cc.getStudentList()){
System.out.println("ss是:"+ss);
}
sqlSession.commit();
sqlSession.close();
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值