• mybatis所需pom文件内容以及配置文件


    官方网站http://www.mybatis.org/mybatis-3/zh/index.html
    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yujian</groupId>
    <artifactId>mybatisdemo3</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
    </dependency>

    </dependencies>
    <!--下面是防止src/main/java下面的东西无法加载到resources下面(若是把db.properties和mybatis-config.xml直接放在resources下面,则不需要)-->
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <skip>true</skip>
    </configuration>
    </plugin>
    </plugins>
    <resources>
    <resource>
    <directory>src/main/java</directory>
    <includes>
    <include>**/*.xml</include>
    <include>**/*.properties</include>
    </includes>
    </resource>
    <resource>
    <directory>src/main/resources</directory>
    <includes>
    <include>**/*</include>
    </includes>
    </resource>
    </resources>
    </build>
    </project>


    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="db.properties"></properties>
    <!--导入参数来源-->
    <settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
    <!--用于生成可视的sql命令-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings><!--配置驼峰命名法必须在properties后面,有顺序,ctr然后点configuration查看顺序-->
    <typeAliases>
    <!--<typeAlias type="com.yujian.pojo.Student" alias="s2"></typeAlias>-->
    <!--如果用上面这种,则每个pojo里面的类都需要加入进来写别名-->
    <package name="com.yujian.pojo"></package>
    <!--如果上面这种,则自动扫描包pojo下的注解类的别名-->
    </typeAliases>
    <!--environments可以写多个,然后通过写id,在StudentMapper.xml下的sql语句中
    加入大baseid即如:<select id="findeStudentList" resultMap="r1" databaseId="development">
    select * from student ;
    </select>-->
    <environments default="development">
    <environment id="development"><!--环境-->
    <transactionManager type="JDBC"/><!--事务管理器-->
    <dataSource type="POOLED"><!--数据源-->
    <property name="driver" value="${mysql.driver}"/>
    <property name="url" value="${mysql.url}"/>
    <property name="username" value="${mysql.username}"/>
    <property name="password" value="${mysql.password}"/>
    </dataSource>
    </environment>
    </environments>
    <mappers>
    <!--<mapper resource="com/yujian/model/StudentMapper.xml"/>
    <mapper resource="com/yujian/model/ClassInfoMapper.xml"/>-->
    <!--设置反射来源-->
    <!--或者用下面这种,可以自动查询包下所有文件-->
    <package name="com.yujian.model"></package>
    <!--<mapper class="com.yujian.model.StudentMapper"></mapper>这种也可以-->
    </mappers>
    </configuration>

    db.properties

    #mysql
    mysql.driver=com.mysql.jdbc.Driver
    mysql.url=jdbc:mysql://localhost:3306/school?useSSL=false
    mysql.username=root
    mysql.password=root

    MybatisHelper.class
    package com.yujian.util;

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

    import java.io.IOException;
    import java.io.InputStream;


    public class MybatisHelper {
    private static SqlSessionFactory sqlSessionFactory=null;
    public static SqlSessionFactory getSqlSessionFactory(){
    if(sqlSessionFactory==null) {
    try {
    /*InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);*/
    InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
    sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return sqlSessionFactory;
    }
    }

    studentsMapper.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="com.yujian.model.StudentMapper">
    <!--<select id="findeStudentList" resultType="com.yujian.pojo.Student">
    select * from student ;
    </select>-->
    <resultMap id="r1" type="s2">
    <!-- <id property="" column="" />-->
    <!--<result column="stuid" property="stuId"/>-->
    <!--上面的type=或者可以用注解的别名-->
    <!--两种方法type="com.yujian.pojo.Student"一般用这种-->
    <!--如果属性名和列的字段名不匹配,通过resultmap可以属性和字段进行匹配-->
    <result column="stuName" property="stuName1"></result>
    <result column="classid" property="classInfo.classId"></result>
    <result property="classInfo.className" column="classname"/>
    </resultMap>
    <!--如果使用association标签,name其他映射会失效,需要加上automapping=true-->
    <resultMap id="r2" type="com.yujian.pojo.Student" autoMapping="true">
    <result column="stuName" property="stuName1"></result>
    <!--<association property="classInfo" javaType="com.yujian.pojo.ClassInfo">
    <result column="classid" property="classId"></result>
    <result column="classname" property="className"></result>
    </association>-->
    <!--或者下面这种-->
    <association property="classInfo" javaType="com.yujian.pojo.ClassInfo"
    select="com.yujian.model.ClassInfoMapper.findListClassInfoById" column="classid">
    </association>
    </resultMap>
    <select id="findAssoListStudent" resultMap="r2">
    select s.*,c.* from student s inner join classinfo c on s.classId=c.classId ;
    </select>

    <!--下面如果用resultType="s2"或者"com.yujian.pojo.Student",则会造成属性名和列字段名不匹配,找不到-->
    <!--<select id="findeStudentList" resultMap="r1">
    select s.*,c.* from student s inner join classinfo c on s.classId=c.classId ;
    </select>-->
    <!--<select id="findStudentById" resultMap="r1" parameterType="int">
    select s.*,c.* from student s inner join classinfo c on s.classId=c.classId where stuid=#{stuId};
    </select>-->
    <insert id="insertStudent" parameterType="com.yujian.pojo.Student">
    insert into student(stuId,stuName,stuSex,stuBirth,classId) values (null ,#{stuName1},#{stuSex},now(),#{classInfo.classId});
    </insert>
    <update id="updateStudent" parameterType="com.yujian.pojo.Student">
    update student set stuName=#{stuName1},stuSex=#{stuSex},classId=#{classInfo.classId},stuBirth=#{stuBirth} where stuId=#{stuId};
    </update>
    <delete id="deleteStudent" parameterType="int">
    delete from student where stuId=#{stuId};
    </delete>
    <!--<resultMap id="result" type="com.yujian.pojo.Student">
    <result column="stuname" property="stuName1"></result>
    </resultMap>
    <select id="findStuLike" resultMap="result">
    select * from student where stuName like #{param1} and stuSex like #{param2} and stuId=#{param3}
    </select>-->
    <resultMap id="result" type="com.yujian.pojo.Student">
    <result column="stuname" property="stuName1"></result>
    </resultMap>
    <select id="findStuMap" resultMap="result">
    select * from student where stuName like #{stuName} and stuSex like #{stuSex} and stuId=#{stuId}
    </select>

    </mapper>
    StudentMapper.class
    package com.yujian.model;

    import com.yujian.pojo.Student;
    import org.apache.ibatis.annotations.*;

    import java.util.List;
    import java.util.Map;

    public interface StudentMapper {
    @Select("select s.*,c.* from student s inner join classinfo c on s.classid=c.classid")
    @Results(id = "student",value = {
    @Result(column = "stuName",property = "stuName1"),
    /*@Result(column = "classId",property = "classInfo.classId"),
    @Result(column = "className",property = "classInfo.className"),*/
    @Result(property = "classInfo",column = "classId",one=@One(select = "com.yujian.model.ClassInfoMapper.findListClassInfoById"))
    /* @Result(column = "stuId",property = "stuId"),
    @Result(column = "stuBirth",property = "stuBirth"),
    @Result(column = "stuSex",property = "stuSex")
    列不需要字段写全,只要不同名字段属性,给一一匹配就好
    */

    })
    List<Student> findeStudentList();
    @Select("select s.*,c.* from student s inner join classinfo c on s.classid=c.classid")
    @Results(id = "student2",value = {
    @Result(column = "stuName",property = "stuName1"),
    @Result(column = "className",property = "classInfo.className") ,
    @Result(column = "classId",property = "classInfo.classId")
    })
    List<Student> findStudentList();
    @Select("select s.*,c.* from student s inner join classinfo c on s.classid=c.classid" +
    " where s.stuid=#{stuId}")
    /*@ResultMap("com.yujian.model.StudentMapper.r1")*/
    @ResultMap("student2")

    Student findStudentById(int stuId);
    void insertStudent(Student student);
    void updateStudent(Student student);
    void deleteStudent(int stuId);
    @Select("select s.*,c.* from student s inner join classinfo c on s.classid=c.classid" +
    " where s.classId=#{classId}")
    /*@ResultMap("com.yujian.model.StudentMapper.r1")*/
    /*@Results({
    @Result(column = "stuName",property = "stuName1")
    })*/
    @Results(id = "student3",value = {
    @Result(column = "stuName",property = "stuName1"),
    @Result(column = "className",property = "classInfo.className") ,
    @Result(column = "classId",property = "classInfo.classId")
    })
    List<Student> findStudentListByClassId(int classId);
    List<Student> findAssoListStudent();
    @Select("select * from student where stuName like #{stuName} and stuSex like #{stuSex} and stuId=#{stuId}")
    @Results({
    @Result(column = "stuName",property = "stuName1")
    })
    List<Student> findStuLike(@Param("stuName") String stuName,@Param("stuSex") String stuSex,@Param("stuId") int stuId);
    List<Student> findStuMap(Map map);
    @Select("select * from student where stuName like #{param1} and stuSex like #{param2} and stuId=#{param3}")
    @Results({
    @Result(column = "stuName",property = "stuName1")
    })
    List<Student> findStuLike2(String stuName,String stuSex,int stuId);
    }

    测试文件
    import com.yujian.model.ClassInfoMapper;
    import com.yujian.model.StudentMapper;
    import com.yujian.pojo.ClassInfo;
    import com.yujian.pojo.Student;
    import com.yujian.util.Dateformat;
    import com.yujian.util.MybatisHelper;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;

    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    public class StudentTest {
    @Test
    public void testFindStudentList(){
    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();

    SqlSession sqlSession=sqlSessionFactory.openSession();
    try {
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    List<Student> students=studentMapper.findeStudentList();
    System.out.println(students.size());
    System.out.println(students.get(0).getStuName1());
    System.out.println(students.get(0).getClassInfo().getClassName());
    System.out.println(students.get(0).getStuSex());

    /*sqlSession.commit();*/
    /* sqlSession.rollback();*/
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }
    @Test
    public void testFindStudent(){
    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();
    SqlSession sqlSession=sqlSessionFactory.openSession();
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    try {
    Student student=studentMapper.findStudentById(2);
    System.out.println(student.getClassInfo().getClassName());
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }
    @Test
    public void testinsertStudent(){
    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();
    SqlSession sqlSession=sqlSessionFactory.openSession();

    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    ClassInfoMapper classInfoMapper=sqlSession.getMapper(ClassInfoMapper.class);

    try {
    Student student=new Student();
    student.setStuName1("李四");
    student.setStuSex(1);
    ClassInfo classInfo=null;
    classInfo=classInfoMapper.findListClassInfoById(1);
    student.setClassInfo(classInfo);

    studentMapper.insertStudent(student);
    sqlSession.commit();
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }


    }
    @Test
    public void testupdateStudent(){
    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();
    SqlSession sqlSession=sqlSessionFactory.openSession();

    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    ClassInfoMapper classInfoMapper=sqlSession.getMapper(ClassInfoMapper.class);
    Dateformat format=new Dateformat();

    try {
    Student student=studentMapper.findStudentById(2);
    student.setStuName1("王五");
    student.setStuSex(0);
    String birth="1997-03-30";
    student.setStuBirth(format.format(birth));
    ClassInfo classInfo=null;
    classInfo=classInfoMapper.findListClassInfoById(2);
    student.setClassInfo(classInfo);

    studentMapper.updateStudent(student);
    sqlSession.commit();

    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }
    @Test
    public void testDeleteStudent(){
    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();
    SqlSession sqlSession=sqlSessionFactory.openSession();
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);

    try {
    studentMapper.deleteStudent(3);
    sqlSession.commit();
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }

    }
    @Test
    public void testfindStudentListByClassId(){
    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();
    SqlSession sqlSession=sqlSessionFactory.openSession();
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);

    try {
    List<Student> students=studentMapper.findStudentListByClassId(1);
    System.out.println(students.get(0).getClassInfo().getClassName());
    System.out.println(students.get(0).getStuName1());
    sqlSession.commit();
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }

    }
    @Test
    public void testFindAssoListStudent(){

    SqlSessionFactory sqlSessionFactory=MybatisHelper.getSqlSessionFactory();

    SqlSession sqlSession=sqlSessionFactory.openSession();
    try {
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    List<Student> students=studentMapper.findAssoListStudent();
    System.out.println(students.size());
    System.out.println(students.get(0).getStuName1());
    System.out.println(students.get(0).getClassInfo().getClassName());
    System.out.println(students.get(0).getStuSex());

    /*sqlSession.commit();*/
    /* sqlSession.rollback();*/
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }
    @Test
    public void testListLikeStu(){
    SqlSession sqlSession=MybatisHelper.getSqlSessionFactory().openSession();
    try {
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);

    List<Student> students=studentMapper.findStuLike("张%","1",1);
    for (Student s:students){
    System.out.println(s.getStuName1());
    }
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }@Test
    public void testListMapStu(){
    SqlSession sqlSession=MybatisHelper.getSqlSessionFactory().openSession();
    try {
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    Map<String,Object> map=new HashMap<String, Object>();
    map.put("stuName","张%");
    map.put("stuSex","1");
    map.put("stuId",1);
    List<Student> students=studentMapper.findStuMap(map);
    for (Student s:students){
    System.out.println(s.getStuName1());
    }
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }
    @Test
    public void testListLikeStu2(){
    SqlSession sqlSession=MybatisHelper.getSqlSessionFactory().openSession();
    try {
    StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);

    List<Student> students=studentMapper.findStuLike2("张%","1",1);
    for (Student s:students){
    System.out.println(s.getStuName1());
    }
    } catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }
    }
    }


  • 相关阅读:
    Mysql命令大全
    查看LINUX进程内存占用情况
    PHP内存溢出 Allowed memory size of 解决办法
    Selenium--->环境配置
    自定义一个web框架
    django 使用记录
    javascript
    paramiko 及堡垒机初步接触
    python 操作 redis
    python rabbitmq
  • 原文地址:https://www.cnblogs.com/pursue339/p/10612752.html
Copyright © 2020-2023  润新知