您现在的位置是:主页 > news > 做网站需要那些技术/alexa排名查询统计

做网站需要那些技术/alexa排名查询统计

admin2025/5/24 20:32:18news

简介做网站需要那些技术,alexa排名查询统计,免费个人网站建设,门户网站内容管理系统这里,首先想说的是,现在的web应用,处理的数据对象,有结构化的,也有非结构化的。同时存在。但是在spring-boot操作数据库的时候,若是在properties文件中配置数据源的信息,通过默认配置加载数据源…

做网站需要那些技术,alexa排名查询统计,免费个人网站建设,门户网站内容管理系统这里,首先想说的是,现在的web应用,处理的数据对象,有结构化的,也有非结构化的。同时存在。但是在spring-boot操作数据库的时候,若是在properties文件中配置数据源的信息,通过默认配置加载数据源…

这里,首先想说的是,现在的web应用,处理的数据对象,有结构化的,也有非结构化的。同时存在。但是在spring-boot操作数据库的时候,若是在properties文件中配置数据源的信息,通过默认配置加载数据源的话,往往只会启动一个。

我出于想弄清如何配置数据源的目的,在这里demo一个配置两个数据源的例子。分别是mysql和mongo。mysql的持久化采用的是mybatis。

mongo的操作比较简单,直接贴上配置数据库的代码:

1 packagecom.shihuc.dbconn.sourceconfig.mongo;2

3 importjava.util.Arrays;4

5 importorg.springframework.beans.factory.annotation.Value;6 importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;7 importorg.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;8 importorg.springframework.boot.autoconfigure.mongo.MongoDataAutoConfiguration;9 importorg.springframework.context.annotation.Bean;10 importorg.springframework.context.annotation.ComponentScan;11 importorg.springframework.context.annotation.Configuration;12 importorg.springframework.data.mongodb.config.AbstractMongoConfiguration;13 importorg.springframework.data.mongodb.repository.config.EnableMongoRepositories;14

15 importcom.mongodb.Mongo;16 importcom.mongodb.MongoClient;17 importcom.mongodb.MongoCredential;18 importcom.mongodb.ServerAddress;19 importcom.mongodb.WriteConcern;20

21 @Configuration22 @EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})23 @ComponentScan24 @EnableMongoRepositories25 public class MongoDataSourceConfig extendsAbstractMongoConfiguration{26

27 @Value("${mongo.database}")28 privateString dbname;29

30 @Value("${mongo.host}")31 privateString dbhost;32

33 @Value("${mongo.port}")34 privateString dbport;35

36 @Value("${mongo.username}")37 privateString username;38

39 @Value("${mongo.password}")40 privateString password;41

42 @Override43 protectedString getDatabaseName() {44 return this.dbname;45 }46

47 publicMongoDataSourceConfig(){48 if(null == dbport || "".equalsIgnoreCase(dbport.trim())){49 dbport = "27017";50 }51 }52

53 @Override54 @Bean(name = "mongods")55 public Mongo mongo() throwsException {56 ServerAddress serverAdress = newServerAddress(dbhost, Integer.valueOf(dbport));57 MongoCredential credential =MongoCredential.createMongoCRCredential(username, dbname , password.toCharArray());58 //Do not use new Mongo(), is deprecated.

59 Mongo mongo = newMongoClient(serverAdress, Arrays.asList(credential));60 mongo.setWriteConcern(WriteConcern.SAFE);61 returnmongo;62 }63 }

mongo数据库配置继承AbstractMongoConfiguration,在这个过程中,会向spring容器注册一个mongoTemplate,这个很重要,后期操作mongo数据库时,主要靠它。

这里重点说下spring-boot和mybatis集成操作mysql的配置和注意事项。

1 packagecom.shihuc.dbconn.sourceconfig.mysql;2

3 importjavax.sql.DataSource;4

5 importorg.springframework.beans.factory.annotation.Value;6 importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;7 importorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;8 importorg.springframework.context.annotation.Bean;9 importorg.springframework.context.annotation.Configuration;10 importorg.springframework.jdbc.datasource.DriverManagerDataSource;11

12 @Configuration13 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})14 public classMysqlDataSourceConfig {15

16 @Value("${mysql.driver}")17 privateString driver;18

19 @Value("${mysql.url}")20 privateString url;21

22 @Value("${mysql.username}")23 privateString username;24

25 @Value("${mysql.password}")26 privateString password;27

28 @Bean(name="mysqlds")29 publicDataSource mysql()30 {31 DriverManagerDataSource ds = newDriverManagerDataSource();32 ds.setDriverClassName(driver);33 ds.setUrl(url);34 ds.setUsername(username);35 ds.setPassword(password);36 returnds;37 }38 }

这个是datasource的配置,注意,类似mongo的配置,要将自动配置的类给exclude掉。让spring只处理我们希望的数据源。否则会受到classpath下的信息,干扰数据源的配置。

另外,就是mybatis的配置。由于spring-boot重点特色是纯java config,所以,这里也采用java配置和注解启用mybatis。

1 packagecom.shihuc.dbconn.sourceconfig.mysql;2

3 importjavax.sql.DataSource;4

5 importorg.apache.ibatis.session.SqlSessionFactory;6 importorg.mybatis.spring.SqlSessionFactoryBean;7 importorg.mybatis.spring.annotation.MapperScan;8 importorg.springframework.beans.factory.annotation.Autowired;9 importorg.springframework.beans.factory.annotation.Qualifier;10 importorg.springframework.context.annotation.Bean;11 importorg.springframework.context.annotation.Configuration;12

13 @Configuration14 @MapperScan(basePackages = "com.shihuc.dbconn.dao.mysql")15 public classMysqlMybatisConfig {16

17 @Autowired18 @Qualifier("mysqlds")19 privateDataSource mysqlds;20

21 @Bean22 public SqlSessionFactory sqlSessionFactoryBean() throwsException {23 final SqlSessionFactoryBean sessionFactory = newSqlSessionFactoryBean();24 sessionFactory.setDataSource(mysqlds);25 returnsessionFactory.getObject();26 }27 }

这里,mapperscan主要是为配置JavaBean和持久化对象之间的映射关系设定根路径。在这个例子中,mapper部分,其实就是通过insert,delete,update,select等注解,结合具体的SQL语句实现ORM的关系。看看这里的代码:

1 packagecom.shihuc.dbconn.dao.mysql;2

3 importorg.apache.ibatis.annotations.Insert;4 importorg.apache.ibatis.annotations.Select;5

6 importcom.shihuc.dbconn.pojo.mysql.MysqlUser;7

8 public interfaceIMysqlUser {9

10 @Select("SELECT * FROM user WHERE id = #{userId}")11 public MysqlUser getUser(intuserId);12

13 @Insert("insert into user (username, job, age, hometown) values(#{username}, #{job}, #{age}, #{hometown})")14 public intaddUser(MysqlUser user);15 }

另外,配合这个IMysqlUser使用的MysqlUser的定义也很重要,主要是里面的constructor函数,通常,添加数据,比如上面的addUser操作,是要创建一个POJO的对象,为了方便,一般都会创建一个带参数的构造函数,注意,必须也同时创建一个无参数的构造函数,否则,在做查询操作,比如上面的getUser时,会出现下面的错误:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 . ____ _ __ _ _2 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \

3 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

4 \\/ ___)| |_)| | | | | || (_| |) ) ) )5 ' |____| .__|_| |_|_| |_\__, | / / / /

6 =========|_|==============|___/=/_/_/_/

7 :: Spring Boot :: (v1.2.7.RELEASE)8

9 2016-01-29 15:01:07.930 INFO 30880 --- [ main] com.shihuc.dbconn.DbConnApp : Starting DbConnApp on CloudGame with PID 30880 (/home/webWps/dbconn/target/classes started by root in /home/webWps/dbconn)10 2016-01-29 15:01:07.997 INFO 30880 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@a85aa40: startup date [Fri Jan 29 15:01:07 CST 2016]; root of context hierarchy11 2016-01-29 15:01:09.887 INFO 30880 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'mysqlDataSourceConfig' of type [class com.shihuc.dbconn.sourceconfig.mysql.MysqlDataSourceConfig$$EnhancerBySpringCGLIB$$63c6820a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)12 2016-01-29 15:01:09.915 INFO 30880 ---[ main] o.s.j.d.DriverManagerDataSource : Loaded JDBC driver: com.mysql.jdbc.Driver13 2016-01-29 15:01:09.923 INFO 30880 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'mysqlds' of type [class org.springframework.jdbc.datasource.DriverManagerDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)14 2016-01-29 15:01:09.926 INFO 30880 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'mysqlMybatisConfig' of type [class com.shihuc.dbconn.sourceconfig.mysql.MysqlMybatisConfig$$EnhancerBySpringCGLIB$$bbfde9e4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)15 2016-01-29 15:01:09.991 INFO 30880 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'sqlSessionFactoryBean' of type [class org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)16 2016-01-29 15:01:10.040 INFO 30880 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'IMysqlUser' of type [class org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)17 2016-01-29 15:01:10.876 INFO 30880 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans forJMX exposure on startup18 2016-01-29 15:01:10.888 INFO 30880 --- [ main] com.shihuc.dbconn.DbConnApp : Started DbConnApp in 3.274 seconds (JVM running for 3.561)19 Exception in thread "main" org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.shihuc.dbconn.pojo.mysql.MysqlUser with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.shihuc.dbconn.pojo.mysql.MysqlUser.()20 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)21 at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371)22 at com.sun.proxy.$Proxy26.selectOne(Unknown Source)23 at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)24 at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)25 at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)26 at com.sun.proxy.$Proxy34.getUser(Unknown Source)27 at com.shihuc.dbconn.service.mysql.MysqlUserService.getUser(MysqlUserService.java:20)28 at com.shihuc.dbconn.DbConnApp.main(DbConnApp.java:34)29 Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.shihuc.dbconn.pojo.mysql.MysqlUser with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.shihuc.dbconn.pojo.mysql.MysqlUser.()30 at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:83)31 at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:45)32 at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:38)33 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:530)34 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:509)35 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:329)36 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:289)37 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:264)38 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:234)39 at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:152)40 at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:57)41 at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:70)42 at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:57)43 at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:259)44 at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:132)45 at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)46 at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)47 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)48 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)49 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:62)50 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)51 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)52 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)53 at java.lang.reflect.Method.invoke(Method.java:606)54 at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)55 ... 7more56 Caused by: java.lang.NoSuchMethodException: com.shihuc.dbconn.pojo.mysql.MysqlUser.()57 at java.lang.Class.getConstructor0(Class.java:2892)58 at java.lang.Class.getDeclaredConstructor(Class.java:2058)59 at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:57)60 ... 31more61 2016-01-29 15:01:11.139 INFO 30880 --- [ Thread-1] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@a85aa40: startup date [Fri Jan 29 15:01:07 CST 2016]; root of context hierarchy62 2016-01-29 15:01:11.142 INFO 30880 --- [ Thread-1] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown

View Code

方便说明问题,将MysqlUser也附上代码:

1 packagecom.shihuc.dbconn.pojo.mysql;2

3 importcom.shihuc.dbconn.pojo.User;4

5 public class MysqlUser extendsUser{6

7 private static final long serialVersionUID = -6412107575129572581L;8

9 //这个id是数据库中通过设置auto_increment得到的主键值

10 private intid;11

12 public intgetId() {13 returnid;14 }15

16 public void setId(intid) {17 this.id =id;18 }19

20 publicMysqlUser(){21

22 }23

24 public MysqlUser(String username, String job, intage, String hometown){25 this.username =username;26 this.job =job;27 this.age =age;28 this.hometown =hometown;29 }30

31 }

下面看看,测试程序吧,我是在main函数里面写的,如下:

1 packagecom.shihuc.dbconn;2

3 importorg.springframework.boot.SpringApplication;4 importorg.springframework.boot.autoconfigure.SpringBootApplication;5 importorg.springframework.context.ApplicationContext;6 importorg.springframework.context.annotation.PropertySource;7

8 importcom.shihuc.dbconn.pojo.mongo.MongoUser;9 importcom.shihuc.dbconn.pojo.mysql.MysqlUser;10 importcom.shihuc.dbconn.service.mongo.MongoUserService;11 importcom.shihuc.dbconn.service.mysql.MysqlUserService;12

13 /**

14 *15 *@authorshihuc16 * @date Jan 29, 201617 *18 */

19 @SpringBootApplication20 @PropertySource(value = "dbconn.properties")21 public classDbConnApp22 {23

24 public static void main(String[] args) throwsThrowable {25

26 SpringApplication app = new SpringApplication(DbConnApp.class);27

28 ApplicationContext ctx =app.run(args);29

30 MysqlUserService mysqlUserService = (MysqlUserService)ctx.getBean("mysqlUserService");31 //MysqlUser su = new MysqlUser("shihuc", "SW", 30 , "wuhan");32 //mysqlUserService.addUser(su);

33 MysqlUser ue = mysqlUserService.getUser(1);34 System.out.println("Mysql User: " +ue);35

36 MongoUserService mongoUserService = (MongoUserService)ctx.getBean("mongoUserService");37 //MongoUser mu = new MongoUser("shihuc", "SW", 30 , "wuhan");38 //mongoUserService.addUser(mu);

39 MongoUser um = mongoUserService.getUser("shihuc");40 System.out.println("Mongo User: " +um);41 }42 }

最后附上我的maven项目的pom文件:

1

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4

5 com.shihuc

6 dbconn

7 0.0.1-SNAPSHOT

8 jar

9

10 dbconn

11 http://maven.apache.org

12

13

14 org.springframework.boot

15 spring-boot-starter-parent

16 1.2.7.RELEASE

17

18

19

20 UTF-8

21

22

23

24

25 org.springframework.boot

26 spring-boot-starter-jdbc

27

28

29 mysql

30 mysql-connector-java

31

32

33 org.mybatis

34 mybatis

35 3.2.3

36

37

38 org.mybatis

39 mybatis-spring

40 1.2.2

41

42

43 org.springframework.boot

44 spring-boot-starter-data-mongodb

45

46

47

48

49

50

51 org.springframework.boot

52 spring-boot-maven-plugin

53

54

55

56

还是相对比较简单的配置和操作。对于这个demo的例子程序,可以在GitHub https://github.com/shihuc/dbconn上下载。