1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
< dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >4.7</ version > < scope >test</ scope > </ dependency > < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis</ artifactId > < version >3.2.6</ version > </ dependency > < dependency > < groupId >mysql</ groupId > < artifactId >mysql-connector-java</ artifactId > < version >5.1.30</ version > </ dependency > < dependency > < groupId >log4j</ groupId > < artifactId >log4j</ artifactId > < version >1.2.17</ version > </ dependency > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 |
drop database bbs; create database bbs character set utf8; use bbs; /*alter database bbs character set utf8;*/ s /* Posts 发的帖子信息 Post_id 帖子的id int Post_Title 帖子的标题 nvarchar Post_BiBoid 帖子所属父版块id int Post_SmBoid 帖子所属子版块id int Post_admin 发帖者姓名 nvarchar Post_createtime 发帖时间 datetime Post_updatetime 更新时间 datetime Post_content 帖子内容 nvarchar Post_goodcount 帖子的好评数 int Post_badcount 帖子的坏评数 int Post_reward 帖子的总共悬赏分(吸引浏览) int Post_score 帖子悬赏分所剩下的分数 int Post_ispay 是否结贴 bit Post_islocked 是否帖子被锁定 bit */ drop table posts; create table posts( id int primary key auto_increment, title varchar (100), biboid int , smboid int , admin varchar (50), createtime datetime, updatetime datetime, context text, goodcount int , badcount int , reward int , score int , ispay bit , islocked bit )ENGINE=InnoDB DEFAULT CHARSET=utf8; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 |
<? 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 > < settings > <!-- changes from the defaults for testing --> < setting name = "cacheEnabled" value = "false" /> < setting name = "useGeneratedKeys" value = "true" /> < setting name = "defaultExecutorType" value = "REUSE" /> </ settings > < typeAliases > <!-- 实体类的别名 --> < typeAlias alias = "Posts" type = "com.mscncn.batis.model.Posts" /> </ typeAliases > < environments default = "development" > < environment id = "development" > < transactionManager type = "jdbc" /> < dataSource type = "POOLED" > < property name = "driver" value = "com.mysql.jdbc.Driver" /> < property name = "url" value = "jdbc:mysql://127.0.0.1:3306/bbs" /> < property name = "username" value = "pwpw1218" /> < property name = "password" value = "pwpw1218" /> </ dataSource > </ environment > </ environments > < mappers > < mapper resource = "com/mscncn/batis/mapper/config/PostsMapper.xml" /> </ mappers > </ configuration > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 |
package com.mscncn.batis.model; import java.sql.Date; /** * 发的帖子信息 * @author king-pan * @version 1.0 * */ public class Posts { private int id; private String title; private int biboid; private int smboid; private Date createTime; private Date updateTime; private String context; private int goodCount; private int badCount; private int reward; private int score; private boolean isPay; private boolean isLocked; //自己提供getter,setter方法 public Posts(){} public Posts(String title,String context){ this .title=title; this .context=context; } public Posts( int id,String title,String context){ this .id=id; this .title=title; this .context=context; } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 |
package com.mscncn.batis.mapper; import java.util.List; import java.util.Map; import com.mscncn.batis.model.Pager; import com.mscncn.batis.model.Posts; public interface PostsMapper{ public void addPosts(Posts posts); public Posts getPostsById( int id); public Posts getPostsByTitle(String title); public void updatePosts(Posts posts); public void deletePosts( int id); public void batchUpdate(List<Posts> list); public List<Posts> getList(); public List<Posts> getListByPage(Pager pager); public Posts getByParams(Posts posts); public Posts getByChoose(Posts post); public Posts trimTest(Posts posts); public void update(Posts post); public void updateArray( int []ary); public Posts getByMap(Map<String,Object> map); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 |
<? 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.mscncn.batis.mapper.PostsMapper" > <!-- 这里namespace必须是PostsMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry”--> < insert id = "addPosts" parameterType = "Posts" > insert into posts(title,context) values(#{title},#{context}) <!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 --> </ insert > <!-- 这里的id必须和PostsMapper接口中的接口方法名相同,不然运行的时候也要报错 --> < select id = "getPostsById" resultType = "Posts" parameterType = "int" > select * from posts where id=#{id} </ select > < select id = "getPostsByTitle" resultType = "Posts" parameterType = "java.lang.String" > select * from posts where title like #{title} </ select > <!-- 如果方法没有参数,那么就不需要parameterType --> < select id = "getList" resultMap = "postList" > select * from posts </ select > < update id = "updatePosts" parameterType = "Posts" > update posts set context=#{context} where id=#{id} </ update > < delete id = "deletePosts" parameterType = "int" > <![CDATA[ delete from posts where id=#{id} ]]> </ delete > < update id = "batchUpdate" parameterType = "java.util.List" > update posts set badcount=3,goodcount=5 where id in < foreach collection = "list" item = "item" open = "(" close = ")" index = "index" separator = "," > #{item.id} </ foreach > </ update > < resultMap type = "Posts" id = "postList" > < id column = "id" property = "id" /> < result column = "title" property = "title" /> < result column = "context" property = "context" /> </ resultMap > </ mapper > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 |
package com.mscncn.batis.util; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private final static SqlSessionFactory sqlSessionFactory; static { String resource = "mybatis-config.xml" ; Reader reader = null ; try { reader = Resources.getResourceAsReader(resource); } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 |
package com.mscncn.batis; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; import com.mscncn.batis.mapper.PostsMapper; import com.mscncn.batis.model.Posts; import com.mscncn.batis.util.MyBatisUtil; public class PostsMapperTest { static SqlSessionFactory sqlSessionFactory = null ; static { sqlSessionFactory = MyBatisUtil.getSqlSessionFactory(); } @Test public void testAdd() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); Posts posts= new Posts( "Spring test" , "这是一个mybatis测试" ); mapper.addPosts(posts); sqlSession.commit(); //这里一定要提交,不然数据进不去数据库中 } finally { sqlSession.close(); } } @Test public void getUser() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); Posts posts=mapper.getPostsById( 1 ); System.out.println(posts.getContext()); } finally { sqlSession.close(); } } @Test public void getUserByTitle() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); Posts posts=mapper.getPostsByTitle( "Spring test" ); System.out.println(posts.getContext()); } catch (Exception e){ e.printStackTrace(); } finally { sqlSession.close(); } } @Test public void getListTest() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); List<Posts> posts=mapper.getList(); System.out.println(posts.size()); System.out.println(posts.get( 0 ).getId()); System.out.println(posts.get( 1 ).getContext()); } catch (Exception e){ e.printStackTrace(); } finally { sqlSession.close(); } } @Test public void updatePostsTest() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); Posts posts= new Posts( 1 , "22" , "mybatis 跟新数据库操作" ); mapper.updatePosts(posts); sqlSession.commit(); } catch (Exception e){ e.printStackTrace(); } finally { sqlSession.close(); } } @Test public void deletePostsTest() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); mapper.deletePosts( 3 ); sqlSession.commit(); } catch (Exception e){ e.printStackTrace(); } finally { sqlSession.close(); } } @Test public void batchTest(){ SqlSession sqlSession = sqlSessionFactory.openSession(); try { PostsMapper mapper = sqlSession.getMapper(PostsMapper. class ); List<Posts> list=mapper.getList(); int index= 0 ; for (Posts ps:list){ ps.setBadCount(++index); ps.setGoodCount(index); } mapper.batchUpdate(list); sqlSession.commit(); } catch (Exception e){ e.printStackTrace(); } finally { sqlSession.close(); } } } |