您的位置:首页 > 其它

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

2017-11-28 19:07 381 查看
这里完成更多的基础数据库操作

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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis
相关文章推荐