Maven+MyBatis 基础程序创建<2>

来源:互联网 发布:西南科技大学软件下载 编辑:程序博客网 时间:2024/06/06 03:52

这里完成更多的基础数据库操作
1 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="User"><!-- 这里的namespace可以随便定义,就是标识当前文件的存在 -->    <resultMap type = "entity.User" id = "map1">    <!-- type就是当前类~,id标识当前resultMap -->        <result column = "name" property = "name" />        <result column = "age" property = "age" />        <!-- column是数据库中的列名,property是当前result的属性名 -->    </resultMap>    <!-- 以上是定义resultMap,用来查询多条数据 -->        <!-- 如果数据库中的列名不能和Java定义的类的属性名一一对应的话,可以用resultMap来完成映射 -->    <!-- 可以用多个resultMap完成多个查询(或者别的功能?) -->    <insert id = "insertUser" parameterType = "entity.User">    <!-- <insert>标签作用:插入数据;id标识当前标签;parameterType是接受参数的参数类型(User类必须写全路径名) -->        insert into user (name,age,sex,did) values (#{name},#{age},#{sex},#{did})        <!-- #{name}对应User类的name属性(必须一一对应不然系统不认) -->    </insert>    <delete id = "deleteUser" parameterType = "int">        delete from user where id = #{id}    </delete>    <update id = "updateUser" parameterType = "map">        update user set name = #{name} where id = #{id}    </update>    <select id = "selectCount" resultType = "int">        select count(*) from user    </select>    <select id = "selectCountBySex" resultType = "int" parameterType = "int">        select count(*) from user where sex = #{sex}    </select>    <select id = "selectCountByALot" resultType = "int" parameterType = "map">        select count(*) from user where sex = #{sex} and age > #{age}    </select>    <select id = "selectById" parameterType = "int" resultType = "entity.User">        select * from user where id = #{id}        <!-- 数据库的表的列名如果跟对应的Java类的属性名一一对应的话,查询出的记录会自动映射到Java类中生成对象 -->        <!-- 如果不能保证一一对应则不能这样写 -->    </select>    <select id = "selectAll" resultType = "entity.User">        select * from user    </select>    <select id = "selectName" resultType = "String">        select name from user    </select>    <select id = "selectNameAndAge" resultMap = "map1">        select name,age from user    </select>    <!-- resultMap指向map1对应的resultMap -->    <!-- 尽管只查了两列,但是还是会返回对象(一条记录就是一个对象),只是没有查询的值会为空 --></mapper>

2 Main.java代码

package main;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;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 entity.User;public class Main {    public static void main(String[] args) {        String path = "Config.xml";        //这里的配置文件不需要写路径        //(但是如果没有把配置文件放在resources包中或者在里面创建了文件夹的话,就需要写路径了)        try {            InputStream stream = Resources.getResourceAsStream(path);               SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();            SqlSessionFactory fac = builder.build(stream);            SqlSession session = fac.openSession();            //以上是固定格式            //1.插入操作            User user = new User();            user.setName("韩耀");            user.setAge(18);            user.setSex(0);            user.setDid(1);            //创建User对象                      session.insert("User.insertUser", user);            //执行插入操作            //参数一:namespace.insertid            //参数二:被操作的参数            session.delete("User.deleteUser", 13);            //2.更新操作            Map map = new HashMap();            map.put("name", "聂风");            map.put("id", 20);            session.update("User.updateUser", map);            //3.查询操作(查询总共有多少条记录)            int result = session.selectOne("User.selectCount");            System.out.println(result);            //4.查询操作(查询性别为男的user)            int result = session.selectOne("User.selectCountBySex",1);            System.out.println(result);            //5.查询操作(查询性别为女年龄为19的user)            Map map = new HashMap();            map.put("sex", 0);            map.put("age",19);            int result = session.selectOne("User.selectCountByALot",map);            System.out.println(result);            //6.查询操作(查询id为1的user,控制台输出他的姓名)            User user = session.selectOne("User.selectById",1);            System.out.println(user.getName());            //7.查询操作(查询全部记录)            List<User> list = session.selectList("User.selectAll");            for(User user : list)                System.out.println(user.getName());            //8.查询操作(查询所有user的姓名)            List<String> list = session.selectList("User.selectName");            for(String name : list)                System.out.println(name);            //9.查询操作(查询全部user的姓名和年龄)            List<User> list = session.selectList("User.selectNameAndAge");                      for(User user:list) {                System.out.println(user.getName());                //可以查询到所以可以打印出来                System.out.println(user.getSex());                  //没有查询sex所以值都为空            }            session.commit();            //提交(如果没有这句话则之前的数据库操作不会执行,但是查询的时候不需要commit())            session.close();            //关闭session        } catch (IOException e) {            e.printStackTrace();        }    }}