您的位置:首页 > 编程语言 > Java开发

Spring Spring mvc mybatis 经验小结(1)

2016-11-29 14:44 246 查看
最近一直在研究ssm  百度上各种不同的有不完整的例子 加上书上旧版本的讲解,弄得我有点迷糊,现在总算作出几个完整可用的例子了

1.mybatis

configuration.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

 <configuration>

  <typeAliases>

  <typeAlias type="com.lijun.Beans.User" alias="User"/>

  <typeAlias type="com.lijun.Beans.Article" alias="Article"/>

  </typeAliases>

 

  <environments default="development">

  <environment id="development">

  <transactionManager type="JDBC"/>

  <!-- 配置连接数据库信息 -->

  <dataSource type="POOLED">

  <property name="driver" value="com.mysql.jdbc.Driver"></property>

  <property name="url" value="jdbc:mysql://localhost/mybatis?useUnicode=true&characterEncoding=UTF-8"/>

  <property name="username" value="root"/>

  <property name="password" value="1234"/>

  </dataSource>

  </environment>

  </environments>

 

  <mappers>

  <mapper resource="com/lijun/beanMapping/UserMap.xml"/>

  <!-- 需要用到的类的map.xml -->

  </mappers>

 </configuration>

pojo

package com.lijun.Beans;

public class User {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString()
{
return "user[id="+id+" name="+name+" age="+age+"]";
}

}

package com.lijun.Beans;

import java.util.List;

public class Article {
private int aid;
private User user;
private String title;
private String content;
private List<Post> posts;
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<Post> getPosts() {
return posts;
}
public void setPosts(List<Post> posts) {
this.posts = posts;
}
public String toString()
{
return "book[title:"+title+"  user:"+user.getName()+"  content:"+content+"]";
}

}

beanMapping

<?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.lijun.Interface.IUserOperation">

<!-- 用面向接口编程时  这儿的命名空间应该改成调用下面这些函数的接口的类路径 -->
<select id="selectById" parameterType="int" resultType="com.lijun.Beans.User">
select * from users where id=#{id}
</select>

<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into users (name,age)values(#{name},#{age})
</insert>

<update id="updateUser" parameterType="User">
update users set name = #{name},age=#{age} where id = #{id}
</update>

<delete id="deleteUser" parameterType="int">
delete from users where id = #{id}
</delete>
<!-- resultmap相当于将查询到的结果集按照下面的result中设置的列名和属性名对应好然后注入到对象中  这个model可以复用 -->
<resultMap type="User" id="resultListUser">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>

<resultMap type="Article" id="resultUserArticleList">
<id column="id" property="aid"/>
<result column="title" property="title"/>
<result column="content" property="content"/>
<association property="user" javaType="User" resultMap="resultListUser"></association>
<collection property="posts" ofType="Post" resultMap="ArticlePostList"></collection>
</resultMap>

<resultMap type="Post" id="ArticlePostList">
<id property="id" column="id"/>
<result property="subject" column="subject"/>
<result property="body" column="body"/>
</resultMap>

<select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
select users.id,users.name,users.age,articles.aid,articles.title,articles.content from users,articles where users.id=articles.userid and users.id=#{id}
</select>

<select id="postsForArticle" resultType="Post">

</select>

<select id="getArticle" parameterType="int" resultMap="resultUserArticleList">
select users.name,articles.title,articles.content,articles.posts from users,articles,posts where 
</select>

</mapper>

调用相应方法的接口

package com.lijun.Interface;

import java.util.List;

import com.lijun.Beans.Article;

import com.lijun.Beans.User;

public interface IUserOperation {
public User selectById(int id);//对应UserMap中的各个标签的id(其实就是函数名) 这样当调用这个接口的函数时   就会执行UserMap中定义的相应的语句

public void addUser(User user);

public void updateUser(User user);

public void deleteUser(int id);

public List<Article> getUserArticles(int id);

}

测试类

package com.lijun.Actions;

import java.io.InputStream;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.lijun.Beans.Article;

import com.lijun.Beans.User;

import com.lijun.Interface.IUserOperation;

public class MybatisTest {
private static SqlSessionFactory sqlSessionFactory;
private static InputStream is;
static{
try{
is = MybatisTest.class.getClassLoader().getResourceAsStream("configuration.xml");//加载配置文件
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
SqlSession session = sqlSessionFactory.openSession();
try{
IUserOperation useroperation = (IUserOperation) session.getMapper(com.lijun.Interface.IUserOperation.class);

//User user = (User)session.selectOne("com.lijun.beanMapping.UserMap.selectById",1);
/*User user = useroperation.selectById(1);
System.out.println(user);
User user1 = new User();
user1.setAge(21);
user1.setName("李君");
useroperation.addUser(user1);
user.setAge(12);
useroperation.updateUser(user);*/

List<Article> list = useroperation.getUserArticles(1);
for(Article article:list)
{
System.out.println(article.toString());
}
}catch(Exception e)
{
e.printStackTrace();
}finally
{
session.commit();
session.close();
}
}

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