idea+mybatis+maven main测试

项目结构

e25d7b868f12218f38ffdab5159a335d75d.jpg

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.bdqn</groupId>
  <artifactId>ssmDemo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>ssmDemo Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.2</version>
    </dependency>
    <!--mysql数据库依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.37</version>
    </dependency>
    <!--mysql8.0数据库依赖-->
   <!-- <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>-->
    <!--日志依赖-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

  </dependencies>

  <build>
    <!--指定mapper存放路径-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
    <finalName>ssmDemo</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

数据源database.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/XXX?useUnicode=true&amp;characterEncoding=UTF-8
##mysql 8.0版本配置数据源
#driver=com.mysql.cj.jdbc.Driver
#url=jdbc:mysql://localhost:3306/test01? 
        serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&useSSL=false

userName=XXX
password=XXX

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="database.properties"/>
    <!--配置log-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>

    </settings>
    <typeAliases>
        <!--实体类位置,默认别名为首字母小写-->
        <package name="com.XXXX.entity" ></package>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <!--将事物交给jdbc管理-->
            <transactionManager type="JDBC" />
            <!--配置数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${userName}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    <!--引入mapper文件-->
    <mappers>
        <!--引入指定的mapper文件路径中间用“/”隔开-->
        <mapper resource="com/XXX/dao/UserDaoMapper.xml"/>
      
        <!--引入该路径下所有的mapper文件用“.”隔开-->
       <package name="com.XXX.dao"></package>
    </mappers>

</configuration>

Log4j.properties

### 配置根 ###
log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE

### 设置输出sql的级别,其中logger后面的内容全部为jar包中所包含的包名 ###
log4j.logger.org.apache=dubug
log4j.logger.java.sql.Connection=dubug
log4j.logger.java.sql.Statement=dubug
log4j.logger.java.sql.PreparedStatement=dubug
log4j.logger.java.sql.ResultSet=dubug

### 配置输出到控制台 ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 配置输出到文件 ###
log4j.appender.fileAppender = org.apache.log4j.FileAppender
log4j.appender.fileAppender.File = logs/log.log
log4j.appender.fileAppender.Append = true
log4j.appender.fileAppender.Threshold = DEBUG
log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 配置输出到文件,并且每天都创建一个文件 ###
log4j.appender.dailyRollingFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyRollingFile.File = logs/log.log
log4j.appender.dailyRollingFile.Append = true
log4j.appender.dailyRollingFile.Threshold = DEBUG
log4j.appender.dailyRollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyRollingFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 配置输出到文件,且大小到达指定尺寸的时候产生一个新的文件 ###
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender 
log4j.appender.ROLLING_FILE.Threshold=ERROR 
log4j.appender.ROLLING_FILE.File=rolling.log 
log4j.appender.ROLLING_FILE.Append=true 
log4j.appender.ROLLING_FILE.MaxFileSize=10KB 
log4j.appender.ROLLING_FILE.MaxBackupIndex=1 
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

### 配置输出到邮件 ###
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@yeqiangwei.com
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@yeqiangwei.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

### 配置输出到数据库 ###
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

 

main测试


public class TestStudent {

    public static void main(String[] args) {
        //读取配置文件
        String resource="mybatis-config.xml";
        InputStream is = null;
        try{
            is = Resources.getResourceAsStream(resource);
        }catch (Exception e){

        }
        
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

        //true为自动提交事物  false手动提交事物 事物提交方法session.commit();
        SqlSession session = factory.openSession(true);
        //获取所有学生教室(trim)
        //List<Student> studentList=session.selectList("com.XXX.dao.StudentMapper.getAllStudent");
        List<Student> studentList=session.getMapper(StudentMapper.class).getAllStudent(1);
        for (Student stu: studentList) {

            System.out.println("学生id"+stu.getId()+"学生姓名"+stu.getName());
            for (ClassRoom room:stu.getStudentList()) {
                System.out.println("教室id"+room.getTid()+"教室名称"+room.getClassRoom());
            }
        }
        //测试foreach 参数为数组
        Integer[] id={1,2};
        List<Student> studentArray=session.getMapper(StudentMapper.class).getAllStudent_array(id);
        for (Student stu: studentArray) {

            System.out.println("学生id"+stu.getId()+"学生姓名"+stu.getName());
            for (ClassRoom room:stu.getStudentList()) {
                System.out.println("教室id"+room.getTid()+"教室名称"+room.getClassRoom());
            }
        }
        //测试foreach 参数为集合
        List<Integer> list=new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        List<Student> studentList1=session.getMapper(StudentMapper.class).getAllStudent_list(list);
        for (Student stu: studentList1) {

            System.out.println("学生id"+stu.getId()+"学生姓名"+stu.getName());
            for (ClassRoom room:stu.getStudentList()) {
                System.out.println("教室id"+room.getTid()+"教室名称"+room.getClassRoom());
            }
        }
        //测试foreach 参数为map
        Map<String,Object> map=new HashMap<String,Object>();
        List<Integer> listId=new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        map.put("name","张三");
        map.put("list",listId);
        map.put("start",0);
        map.put("pageSize",2);
        List<Student> allStudentMap=session.getMapper(StudentMapper.class).getAllStudent_map(map);
        for (Student stu: allStudentMap) {

            System.out.println("学生id"+stu.getId()+"学生姓名"+stu.getName());
            for (ClassRoom room:stu.getStudentList()) {
                System.out.println("教室id"+room.getTid()+"教室名称"+room.getClassRoom());
            }
        }

    }
}

实体类一对多关系


public class Student {
    private int id;
    private String name;
    //一对多关系
    private List<ClassRoom> studentList;

    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 void setStudentList(List<ClassRoom> studentList) {
        this.studentList = studentList;
    }

    public List<ClassRoom> getStudentList() {
        return studentList;
    }
}

public class ClassRoom {
    private int tid;
    private int studentId;
    private String classRoom;

    public int getTid() {
        return tid;
    }

    public void setTid(int tid) {
        this.tid = tid;
    }

    public int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public String getClassRoom() {
        return classRoom;
    }

    public void setClassRoom(String classRoom) {
        this.classRoom = classRoom;
    }
}

 Dao接口

public interface StudentMapper {
    List<Student> getAllStudent(@Param("id")Integer id);
    //查询所有学生的所属教室(数组)
    List<Student> getAllStudent_array(Integer[] id);
    //查询所有学生的所属教室(集合)
    List<Student> getAllStudent_list(List<Integer> id);
    //查询所有学生的所属教室(map)
    List<Student> getAllStudent_map(Map<String,Object> id);
}

 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="com.XXX.dao.StudentMapper">
    <!--关系映射-->
    <resultMap id="getClassRoom" type="student">
        <id property="id" column="id"></id>
        <result column="name" property="name"></result>
        <collection property="studentList" ofType="ClassRoom">
            <id property="tid" column="tid"></id>
            <result column="studentId" property="studentId"></result>
            <result column="classRoom" property="classRoom"></result>
        </collection>
    </resultMap>
    <!--trim+if动态sql-->
    <select id="getAllStudent" resultMap="getClassRoom" >
        select * from student s left join classRoom c on s.id=c.studentId
        <trim prefix="where">
            <if test="id!=null">
               s.id=#{id}
            </if>
        </trim>
    </select>
    <select id="getAllStudent_array" resultMap="getClassRoom">
        select * from student s left join classRoom c on s.id=c.studentId where s.id in
        <foreach collection="array" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
    <select id="getAllStudent_list" resultMap="getClassRoom">
        select * from student s left join classRoom c on s.id=c.studentId where s.id in
        <foreach collection="list" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
    <select id="getAllStudent_map" resultMap="getClassRoom">
        select * from student s left join classRoom c on s.id=c.studentId where s.name=#{name} or s.id in
        <foreach collection="list" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
        order by c.tid desc
        limit #{start},#{pageSize}
    </select>
</mapper>

一对一关系 



public class User {
    private int id;
    private String name;
    private String password;
    //一对一关系映射
    private Role roleId;
    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 String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setRoleId(Role roleId) {
        this.roleId = roleId;
    }

    public Role getRoleId() {
        return roleId;
    }

    @Override
    public String toString() {
        return "id"+id+"姓名"+name+"密码"+password+"角色名"+getRoleId().getRoleName();
    }
}


public class Role {
    private String roleName;
    private int id;
  

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

   
}

Dao


public interface UserDaoMapper {

    //获取总数
    int countUser();
//查询所有对象
    List<User> getAllUser();
//添加对象
    int addUser(User user);
//通过id删除对象
    int deleteUser(@Param("id")int id);
//查询对象角色
    List<User> getAllUserRole();
}

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="com.XXX.dao.UserDaoMapper">
    <resultMap id="user" type="user">
        <id column="id" property="id"></id>
        <result property="name" column="name"></result>
        <result property="password" column="password"></result>
        <association property="roleId" javaType="role">
            <id column="id" property="id"></id>
            <result column="roleName" property="roleName"></result>
        </association>
    </resultMap>
    <select id="countUser" resultType="int">
        select count(1) from user
    </select>

    <select id="getAllUser" resultType="user">
        select * from user
    </select>
    <insert id="addUser" parameterType="user">
        insert into user(name,password) values(#{name},#{password})
    </insert>
    <delete id="deleteUser">
        delete from user where id=#{id}
    </delete>
    <select id="getAllUserRole" resultMap="user">
        select * from USER u left join role r on u.roleId=r.id
    </select>
</mapper>

测试


public class Test1 {
    private static SqlSessionFactory factory;
    static {
        String resource="mybatis-config.xml";
        InputStream is = null;
        try{
            is = Resources.getResourceAsStream(resource);
        }catch (Exception e){

        }
         factory = new SqlSessionFactoryBuilder().build(is);
    }
    public static SqlSession createSqlSession(){
        //factory.openSession(false) 参数是false 手动提交事物  true 自动提交事物
        return factory.openSession(false);
    }

    public static void main(String[] args) {
        //查询
        SqlSession session=Test1.createSqlSession();
        //测试方法一
       // List<User> userList=session.getMapper(UserDaoMapper.class).getAllUser();
        //测试方法二
        List<User> userList=session.selectList("com.XXX.dao.UserDaoMapper.getAllUser");
       /* for (User user:userList) {
            System.out.println(user);
        }*/
        //删除
     //  session.getMapper(UserDaoMapper.class).deleteUser(75);
       // session.commit();
        //查询角色
        List<User> userRoleList=session.selectList("com.XXXX.dao.UserDaoMapper.getAllUserRole");
        for (User user:userRoleList) {
            System.out.println(user);
        }

    }
}

public class Test {
    public static void main(String[] args) {
        String resource="mybatis-config.xml";
        InputStream is = null;
        try{
             is = Resources.getResourceAsStream(resource);
        }catch (Exception e){

        }
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = factory.openSession(true);
        int result = session.selectOne("com.bdqn.dao.UserDaoMapper.countUser");
        System.out.println(result);
        List<User> userList = session.selectList("com.XXXX.dao.UserDaoMapper.getAllUser");
        System.out.println(userList.get(0));

        User user=new User();
        user.setName("张三");
        user.setPassword("123456");
        int addResult=session.insert("com.XXXX.dao.UserDaoMapper.addUser",user);
      // session.commit();
        System.out.println(addResult);
    }
}

 

转载于:https://my.oschina.net/u/3535099/blog/3064144

基于SpringBoot、MyBatisMaven的毕设项目的环境配置和使用说明如下: 1. 运行环境要求: - Java JDK 1.8及以上版本 - Tomcat 8.5及以上版本 - MySQL数据库 - HBuilderX(或Webstorm)、Eclipse(或IntelliJ IDEA、MyEclipse、STS等)等IDE工具 2. 硬件环境要求: - Windows 7/8/10操作系统,内存需大于1GB - 或者Mac OS操作系统 3. 项目技术组成: - SpringBoot:用于构建基于Java的Web应用程序 - MyBatis:用于数据库访问和ORM映射 - Maven:用于项目依赖管理 - Vue等其他组件:用于前端开发 4. 环境配置步骤: - 安装Java JDK 1.8,并配置环境变量 - 安装Tomcat,并配置相关环境 - 安装MySQL数据库,并创建对应名称的数据库,并导入项目的SQL文件 - 安装HBuilderX(或Webstorm)或Eclipse(或IntelliJ IDEA、MyEclipse、STS等)等IDE工具 5. 使用说明: - 使用Navicat或其他工具,在MySQL中创建对应名称的数据库,并导入项目的SQL文件 - 使用IDEA/Eclipse/MyEclipse导入项目,并修改相关配置 - 运行SpringbootSchemaApplication.java文件,即可打开项目首页 - 管理员账号为abo,密码为abo - 开发环境为Eclipse/IDEA数据库为MySQL,使用Java语言开发 - 数据库连接配置在src\main\resources\application.yml文件中进行修改 - Maven包版本为apache-maven-3.3.9 - 后台路径地址为localhost:8080/项目名称/admin 希望以上信息对您的毕设项目有所帮助![1][2][3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值